logo

Extra Block Types (EBT) - Nieuwe Layout Builder ervaring❗

Extra Block Types (EBT) - gestileerde, aanpasbare bloktypes: Slideshows, Tabs, Cards, Accordions en vele andere. Ingebouwde instellingen voor achtergrond, DOM Box, javascript-plugins. Ervaar vandaag al de toekomst van layout building.

Demo EBT-modules Download EBT-modules

❗Extra Paragraph Types (EPT) - Nieuwe Paragraphs ervaring

Extra Paragraph Types (EPT) - analoge op paragrafen gebaseerde set modules.

Demo EPT-modules Download EPT-modules

Scroll

Werken met configuratieformulieren

03/10/2025, by Ivan

$config gebruiken in de context van een formulier

U kunt configuratieformulieren gebruiken om te begrijpen hoe $config gegevens kan ophalen die door de gebruiker zijn ingevoerd en deze kan wijzigen in het bestand {module}.settings.yml. Hier is de code voor het declareren van het $config-object in een formulier, dat u kunt vinden in het PHP-bestand van het instellingenformulier.

De klasse Drupal Core ConfigFactory is de manier om configuratiegegevens te lezen en te schrijven, en wordt gebruikt om een instantie van een Config-object te maken op basis van de inhoud van het opgegeven configuratiebestand. Het nieuwe Config-object kan vervolgens worden gebruikt om CRUD-bewerkingen uit te voeren met deze gegevens.

Config

Voorbeeld van de definitie van een formulier (te vinden in example/src/Form/exampleSettingsForm.php):

namespace Drupal\example\Form;

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

/**
 * Configureer example-instellingen voor deze site.
 */
class ExampleSettingsForm extends ConfigFormBase {

  /** 
   * Config-instellingen.
   *
   * @var string
   */
  const SETTINGS = 'example.settings';

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

  /** 
   * {@inheritdoc}
   */
  protected function getEditableConfigNames() {
    return [
      static::SETTINGS,
    ];
  }

  /** 
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state) {
    $config = $this->config(static::SETTINGS);

    $form['example_thing'] = [
      '#type' => 'textfield',
      '#title' => $this->t('Dingen'),
      '#default_value' => $config->get('example_thing'),
    ];  

    $form['other_things'] = [
      '#type' => 'textfield',
      '#title' => $this->t('Andere dingen'),
      '#default_value' => $config->get('other_things'),
    ];  

    return parent::buildForm($form, $form_state);
  }

  /** 
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    // Haal de configuratie op.
    $this->configFactory->getEditable(static::SETTINGS)
      // Stel de ingediende configuratie-instelling in.
      ->set('example_thing', $form_state->getValue('example_thing'))
      // U kunt meerdere configuraties tegelijk instellen
      // door meerdere keren set() aan te roepen.
      ->set('other_things', $form_state->getValue('other_things'))
      ->save();

    parent::submitForm($form, $form_state);
  }

}

Routingbestand (example.routing.yml):

example.settings:
  path: '/admin/config/example/settings'
  defaults:
    _form: '\Drupal\example\Form\ExampleSettingsForm'
    _title: 'example'
  requirements:
    _permission: 'administer site configuration'

Door gebruik te maken van het Config-object kunt u uw gegevens, verzameld uit het formulier, vereenvoudigen. Met bovenstaande code in het instellingenformulier kunt u formuliergegevens opslaan in {module}.settings.yml.

Elke klasse die ConfigFormBase uitbreidt, moet de methode getEditableConfigNames implementeren en een array teruggeven met de namen van de configuratievelden die zij bewerkt.