Maison > développement back-end > tutoriel php > Drupal 8 paramètres tiers et pseudo-champs

Drupal 8 paramètres tiers et pseudo-champs

Christopher Nolan
Libérer: 2025-02-16 13:14:09
original
996 Les gens l'ont consulté

Ce module Drupal 8 crée des formes réutilisables qui peuvent être attachées à différents paquets de nœuds. Construisons un système de formulaire simple mais puissant et réutilisable. L'objectif est de charger facilement un formulaire sur chaque page de nœud, en sélectionnant le type de formulaire par bundle de nœuds.

Drupal 8 Third Party Settings and Pseudo-Fields

Nous avons déjà créé un type de plugin personnalisé, ReusableForm, avec une classe de plugin de base pour l'extension. Chaque plugin interagit avec une classe de formulaire définie dans son annotation. De même, une classe de formulaire de base fournit une base pour les nouvelles formes.

Ensuite, nous allons configurer les types de nœuds de base pour utiliser ces plugins et rendre la forme appropriée pendant l'affichage du nœud. Tout d'abord, créons un plugin simple ReusableForm.

Concepts clés:

  • Plugin ReusableForm: Un type de plugin personnalisé permettant la sélection des formulaires par bundle de nœuds.
  • Classe de formulaire: Définit la structure et la logique de chaque forme individuelle.
  • Service de gestionnaire de plugin: donne accès aux plugins disponibles ReusableForm.
  • Paramètres tiers: stocke la sélection du plugin par type de nœud.
  • Pseudo Field: permet de rendre le formulaire sélectionné sur l'affichage du nœud.

Création du premier plugin

Dans le répertoire src/Form du module, créez BasicForm.php:

<?php
namespace Drupal\reusable_forms\Form;

use Drupal\Core\Form\FormStateInterface;

class BasicForm extends ReusableFormBase {

  public function getFormId() {
    return 'basic_form';
  }

  public function buildForm(array $form, FormStateInterface $form_state) {
    $form = parent::buildForm($form, $form_state);
    return $form;
  }

  public function submitForm(array &$form, FormStateInterface $form_state) {
    // Handle form submission.
  }
}
Copier après la connexion

Cela étend notre formulaire de base, implémentant les méthodes requises. La méthode buildForm utilise la logique de classe de base. Le traitement de la soumission est laissé pour la mise en œuvre ultérieure.

Maintenant, créez le plugin dans src/Plugin/ReusableForm/BasicForm.php:

<?php
namespace Drupal\reusable_forms\Plugin\ReusableForm;

use Drupal\reusable_forms\ReusableFormPluginBase;

/**
 * @ReusableForm(
 *   id = "basic_form",
 *   name = @Translation("Basic Form"),
 *   form = "Drupal\reusable_forms\Form\BasicForm"
 * )
 */
class BasicForm extends ReusableFormPluginBase {}
Copier après la connexion

L'annotation définit l'ID du plugin, le nom et la classe de formulaire associée.

Configuration du type de nœud

Pour accéder et charger les plugins, nous ferons du Plugin Manager un service. Dans reusable_forms.services.yml:

services:
  plugin.manager.reusable_forms:
    class: Drupal\reusable_forms\ReusableFormsManager
    parent: default_plugin_manager
Copier après la connexion

Ensuite, modifiez le formulaire de modification du type de nœud (reusable_forms.module):

use Drupal\Core\Form\FormStateInterface;
use Drupal\node\NodeTypeInterface;

function reusable_forms_form_node_type_form_alter(&$form, FormStateInterface $form_state) {
  // ... (Code to add checkbox and radios for enabling and selecting forms) ...
  $form['#entity_builders'][] = 'reusable_forms_form_node_type_form_builder';
}

function reusable_forms_form_node_type_form_builder($entity_type, NodeTypeInterface $type, &$form, FormStateInterface $form_state) {
  // ... (Code to save/unset third-party settings) ...
}
Copier après la connexion

Cela ajoute une case à cocher pour activer les formulaires réutilisables et une liste de sélection pour choisir un plugin. Le rappel #entity_builders enregistre la sélection dans des paramètres tiers.

Schéma de configuration (reusable_forms.schema.yml)

node.type.*.third_party.reusable_forms:
  type: mapping
  label: 'Reusable Forms'
  mapping:
    enabled:
      type: boolean
      label: 'Enable reusable forms'
    plugin:
      type: string
      label: 'Form Plugin'
Copier après la connexion

View du nœud

Créer un champ pseudo (reusable_forms.module):

use Drupal\node\Entity\NodeType;
use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
use Drupal\Core\Entity\EntityInterface;

function reusable_forms_entity_extra_field_info() {
  // ... (Code to add 'reusable_form' pseudo field to enabled node types) ...
}

function reusable_forms_node_view(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display, $view_mode, $langcode) {
  // ... (Code to render the form using the plugin manager) ...
}
Copier après la connexion

hook_entity_extra_field_info définit le champ pseudo, et hook_node_view rend la forme sélectionnée.

Cela complète la structure de base. N'oubliez pas d'effacer les caches après avoir apporté des modifications. Cette explication détaillée fournit une base solide pour construire des fonctionnalités de forme réutilisables plus complexes dans Drupal 8.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal