web-dev-qa-db-fra.com

Comment obtenir une valeur de configuration de bloc dans un module?

J'ai créé un bloc personnalisé qui contient un champ de formulaire.

Ceci est ma méthode blockSubmit().

public function blockSubmit($form, FormStateInterface $form_state) {
    // Save our custom settings when the form is submitted.
    $this->setConfigurationValue('my_text_field', $form_state->getValue('my_text_field'));
} 

Maintenant, je veux accéder à la valeur my_text_field en dehors de la classe de bloc personnalisée.

6
Nikhil Banait

Vous pouvez charger l'entité de configuration de bloc et obtenir les paramètres.

$block = \Drupal\block\Entity\Block::load($block_id);
if ($block) {
  $settings = $block->get('settings');
  $my_text_field = $settings['my_text_field'];
}

$block_id est le nom de la machine que vous voyez dans la disposition des blocs lorsque vous enregistrez le bloc.

Modifier: stocker la configuration du module

Si vous souhaitez stocker la configuration des modules, n'utilisez pas un formulaire de bloc, mais utilisez un formulaire de configuration. Référence https://www.drupal.org/docs/8/api/configuration-api/working-with-configuration-forms (voir le commentaire de @Berdir)

Vider tous les blocs et leurs paramètres

$blocks = \Drupal\block\Entity\Block::loadMultiple();
foreach ($blocks as $key => $block) {
  $settings = $block->get('settings');
  var_dump([$key => $settings]);
}
12
4k4

Remplacer BLOCK_ID avec l'ID de votre bloc et y creuser les variables en utilisant la fonction get

$config = \Drupal::config('block.block.BLOCK_ID');
$config->get('settings.my_text_field');
2
Razeem Ahmad