web-dev-qa-db-ja.com

モジュールのブロック構成値を取得するにはどうすればよいですか?

フォームフィールドを含むカスタムブロックを作成しました。

これは私の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値にアクセスします。

6
Nikhil Banait

ブロック構成エンティティをロードして、設定を取得できます。

$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]);
}
12
4k4

置換BLOCK_IDブロックのIDを使用し、get関数を使用してブロック内の変数を掘ります

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