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.
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]);
}
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');