2

ここhttp://symfony.com/doc/current/cookbook/form/dynamic_form_generation.htmlに示されているように、データ イベントで動的にフォームを生成することができます。

この例では、 FormFactoryを使用して新しいフィールドが追加されていますが、これはbuildFormメソッドで提供されるFormBuilderよりも少し不便です。

buildFormメソッドで動的フォームを構築する方法があります。

$this->createForm(new MyFormType(), $object);

buildFormメソッド内で、オプション配列のオブジェクトを「データ」として取得するため、データに応じてフォームを動的に構築する方法が提供されます。

これは、データ イベントほど強力ではありません (リクエスト バインディングは一例です)。

FormBuilderでデータ イベントを使用する方法はありますか? 静的フォームを作成する場合でも動的フォームを作成する場合でも、フォームの作成はシームレスであるべきだと思います。

4

1 に答える 1

0

フィールドを作成できます:

public function buildView(FormView $view, FormInterface $form)
{
    $data = $form->getClientData();
    if ($data && is_array($data) && count($data)) {
        $children = $form->getChildren();
        foreach ($data as $k => $v) {
            $children[$k]->add($this->form_factory->createNamed('hidden', 'name', $v))
        }
    }
}
于 2012-05-13T18:48:53.667 に答える