logo

Types de blocs supplémentaires (EBT) – Nouvelle expérience de Layout Builder❗

Types de blocs supplémentaires (EBT) – types de blocs stylisés et personnalisables : diaporamas, onglets, cartes, accordéons et bien d’autres. Paramètres intégrés pour l’arrière-plan, la boîte DOM, les plugins JavaScript. Découvrez dès aujourd’hui le futur de la création de mises en page.

Démo des modules EBT Télécharger les modules EBT

❗Types de paragraphes supplémentaires (EPT) – Nouvelle expérience Paragraphes

Types de paragraphes supplémentaires (EPT) – ensemble de modules basé sur les paragraphes analogiques.

Démo des modules EPT Télécharger les modules EPT

Défilement
05/07/2025, by Ivan

Menu

Partie IV du guide pratique de création de modules de base Drupal 8
De .info aux tests, uniquement les bases

Jusqu’ici tout est assez propre, mais comment pouvons-nous modifier ce que nous voyons ? Avec certains formulaires, bien sûr.

Pour des cas d’usage simples, voir la section « Paramètres du site et étiquettes ».

/src/Form/LoremIpsumForm.php

<?php

namespace Drupal\loremipsum\Form;

use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;

class LoremIpsumForm extends ConfigFormBase {

  /**
   * {@inheritdoc}
   */
  public function getFormId() {
    return 'loremipsum_form';
  }

Nous commençons notre fichier de configuration en étendant ConfigFormBase. La classe LoremIpsumForm est la classe référencée dans le fichier routing.yml.

Ensuite, la méthode qui construit réellement le formulaire de configuration :

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state) {
    // Constructeur du formulaire.
    $form = parent::buildForm($form, $form_state);
    // Paramètres par défaut.
    $config = $this->config('loremipsum.settings');

La variable $config est l’endroit où nous stockons nos réglages actuels.

Nous définissons ensuite nos champs de formulaire et retournons le formulaire :

    // Champ titre de la page.
    $form['page_title'] = [
      '#type' => 'textfield',
      '#title' => $this->t('Titre de la page du générateur Lorem ipsum :'),
      '#default_value' => $config->get('loremipsum.page_title'),
      '#description' => $this->t('Donnez un titre à votre page génératrice de lorem ipsum.'),
    ];
    // Champ texte source.
    $form['source_text'] = [
      '#type' => 'textarea',
      '#title' => $this->t('Texte source pour la génération de lorem ipsum :'),
      '#default_value' => $config->get('loremipsum.source_text'),
      '#description' => $this->t('Écrivez une phrase par ligne. Ces phrases seront utilisées pour générer un texte aléatoire.'),
    ];

    return $form;
  }

Nous devons également déclarer les méthodes validateForm(), submitForm() et getEditableConfigNames(), même si nous ne les utilisons pas :

  /**
   * {@inheritdoc}
   */
  public function validateForm(array &$form, FormStateInterface $form_state) {

  }

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    $config = $this->config('loremipsum.settings');
    $config->set('loremipsum.source_text', $form_state->getValue('source_text'));
    $config->set('loremipsum.page_title', $form_state->getValue('page_title'));
    $config->save();
    return parent::submitForm($form, $form_state);
  }

  /**
   * {@inheritdoc}
   */
  protected function getEditableConfigNames() {
    return [
      'loremipsum.settings',
    ];
  }

}