logo

Extra Block Types (EBT) - Nuova esperienza con Layout Builder❗

Extra Block Types (EBT) - tipi di blocchi stilizzati e personalizzabili: Slideshows, Tabs, Cards, Accordion e molti altri. Impostazioni integrate per sfondo, DOM Box, plugin javascript. Vivi oggi il futuro della costruzione dei layout.

Demo moduli EBT Scarica moduli EBT

❗Extra Paragraph Types (EPT) - Nuova esperienza con Paragraphs

Extra Paragraph Types (EPT) - insieme di moduli basati su paragrafi in modo analogo.

Demo moduli EPT Scarica moduli EPT

Scorri
03/10/2025, by Ivan

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.

Config

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.