フォームフィールドを含むカスタムブロックを作成しました。
これは私の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'));
}
次に、カスタムブロッククラスの外部からmy_text_field値にアクセスします。
ブロック構成エンティティをロードして、設定を取得できます。
$block = \Drupal\block\Entity\Block::load($block_id);
if ($block) {
$settings = $block->get('settings');
$my_text_field = $settings['my_text_field'];
}
$block_id
は、ブロックを保存するときにブロックレイアウトに表示されるマシン名です。
編集:モジュール構成の保存
モジュールの構成を保存する場合は、ブロックフォームを使用せず、構成フォームを使用してください。リファレンス https://www.drupal.org/docs/8/api/configuration-api/working-with-configuration-forms (@Berdirからのコメントを参照)
すべてのブロックとその設定をダンプします
$blocks = \Drupal\block\Entity\Block::loadMultiple();
foreach ($blocks as $key => $block) {
$settings = $block->get('settings');
var_dump([$key => $settings]);
}
置換BLOCK_ID
ブロックのIDを使用し、get関数を使用してブロック内の変数を掘ります
$config = \Drupal::config('block.block.BLOCK_ID');
$config->get('settings.my_text_field');