Werken met configuratieformulieren
$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.

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.