ブロック付きのカスタムモジュールがあります。
_namespace Drupal\generator\Plugin\Block;
use Drupal\Core\Block\BlockBase;
class GeneratorBlock extends BlockBase {
public function build() {
$form = \Drupal::formBuilder()->getForm('Drupal\generator\Form\ProjektForm');
return array(
'form' => $form,
'#attached' => array(
'library' => array(
'generator/generator-css'
),
),
);
}
}
_
それが行うすべては、追加の_.css
_ファイル(ライブラリから)を使用してそこにFromを配置することです。このブロックは、管理->構造->ブロックレイアウトで配置でき、正常に動作します。
私が今欲しいのはAjax経由でそのブロックを読み込むです(場合によってはブロック全体を更新したいためです)。そして、私はそれをラッパーにロードするか($.load(...)
のように)、またはJS変数でブロックのコンテンツを取得することを意味します(ブロックを含むページ全体ではなく、レンダリングされたブロックのみ)。
drupal.org にDrupal 7のチュートリアルを見つけましたが、Drupal 8に移植できませんでした。
#ajax
Drupal ajax。
namespace Drupal\generator\Plugin\Block;
use Drupal\Core\Block\BlockBase;
use Drupal\generator\Form\ProjektForm;
class GeneratorBlock extends BlockBase {
public function build() {
return array(
'form_wrapper' => array(
'#prefix' => '<div id="form-wrapper">',
'#suffix' => '</div>',
'#markup' => '',
),
'load_form' => array(
'#type' => 'button',
'#value' => $this->t('Load form'),
'#ajax' => array(
'wrapper' => 'form-wrapper',
'callback' => array(static::class, 'getForm'),
),
),
'#attached' => array(
'library' => array(
'generator/generator-css'
),
),
);
}
public static function getForm() {
return \Drupal::formBuilder()->getForm(ProjektForm::class);
}
}