カスタムモジュールを使用してページに埋め込むフォームを作成しました。このフォームを特定のクラスを持つdivでラップするにはどうすればよいですか?
次のコードで作成したビルドに追加する必要があります。
$build = array(
'form' => $form,
'#type' => 'markup',
'#markup' => $html,
'#attached' => array(
'library' => array('pup_viewfiles/sortfiles_libraries'),
),
);
Drupal 8.でフォームにマークアップを追加するには、さまざまな方法があります。8。ビルド配列で、ラッパー要素を追加し、フォームをネストすることができます。
$build['wrapper'] = [
'#type' => 'container',
'#attributes' => ['id' => 'my-form-wrapper', 'class' => ['my-form-wrapper']],
];
$build['wrapper']['form'] = \Drupal::formBuilder()->getForm('Drupal\mymodule\Form\MyForm');
あるいは、フォームに「#prefix」と「#suffix」を追加することもできます。
$form['#prefix'] = '<div class="my-form-wrapper">';
$form['#suffix'] = '</div>';
または、フォームのテンプレートを使用して、提案フォーム--form-id.html.twigを使用してテーマに追加し、そこにカスタムマークアップを追加することもできます。 (テンプレート名のアンダースコアをハイフンに置き換えてください。)
<div id="my-form-wrapper">
<form{{ attributes }}>
{{ children }}
</form>
</dv>
コンテナのrender要素の完璧なユースケースを説明したと思います。
あなたのビルドは次のようなものになると思います
$build = [
'some_name' => [
'#type' => 'container',
'#attributes' => [
'class' => 'some class',
],
'form' => $form,
],
'some_other_name' => [
'#type' => 'markup',
'#markup' => $html,
],
'#attached' => array(
'library' => array('pup_viewfiles/sortfiles_libraries'),
],
];
HTMLマークアップが必要な場所が正確にわかりませんでした(これはコンテナーの外にあります)。