Lavorare con i moduli di configurazione
Usare $config nel contesto di un modulo
Puoi utilizzare i moduli di configurazione per capire come $config possa recuperare i dati inseriti dall’utente e modificare i dati nel file {module}.settings.yml. Ecco il codice per dichiarare l’oggetto $config in un modulo, che puoi trovare nel file PHP delle impostazioni del modulo.
La classe Drupal Core ConfigFactory è il modo per leggere e scrivere i dati di configurazione ed è utilizzata per creare un’istanza dell’oggetto Config basato sul contenuto del file di configurazione specificato. Un nuovo oggetto Config può poi essere utilizzato per eseguire operazioni CRUD su questi dati.

Esempio di definizione di un modulo (si trova in example/src/Form/exampleSettingsForm.php):
namespace Drupal\example\Form;
use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;
/**
* Configura le impostazioni di example per questo sito.
*/
class ExampleSettingsForm extends ConfigFormBase {
/**
* Config settings.
*
* @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('Things'),
'#default_value' => $config->get('example_thing'),
];
$form['other_things'] = [
'#type' => 'textfield',
'#title' => $this->t('Other things'),
'#default_value' => $config->get('other_things'),
];
return parent::buildForm($form, $form_state);
}
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
// Recupera la configurazione.
$this->configFactory->getEditable(static::SETTINGS)
// Imposta la configurazione inviata.
->set('example_thing', $form_state->getValue('example_thing'))
// Puoi impostare più configurazioni contemporaneamente
// effettuando più chiamate a set().
->set('other_things', $form_state->getValue('other_things'))
->save();
parent::submitForm($form, $form_state);
}
}
File di routing (example.routing.yml):
example.settings:
path: '/admin/config/example/settings'
defaults:
_form: '\Drupal\example\Form\ExampleSettingsForm'
_title: 'example'
requirements:
_permission: 'administer site configuration'
Utilizzando l’oggetto Config, puoi semplificare i tuoi dati raccolti dal modulo. Con il codice indicato sopra nel file delle impostazioni del modulo, sarai in grado di memorizzare i dati del modulo in {module}.settings.yml.
Qualsiasi classe che estende ConfigFormBase deve implementare il metodo getEditableConfigNames e restituire un array di nomi dei campi di configurazione che modifica.