41

私は Symfony2 でフォームビルダーを使用してきましたが、とてもいいと思います。上部に一連のボックスを配置して検索結果をフィルタリングする検索ページを作成したいと思っています。現在、私には 3 つの異なる団体 (裁判官、通訳、弁護士) がいます。ユーザーが部分的または完全な名前を入力して、すべてのエンティティを検索できるようにしたいと考えています。実際の検索部分は処理できますが、フォーム ビルダーの生成に問題があります。

私がやろうとしているのは、特定のエンティティに関連付けられていないフォームを作成することです。私が Symfony サイトで読んだすべてのチュートリアルとドキュメントは、デフォルトでエンティティにアタッチされているように機能します。これを任意のエンティティにアタッチして、各テキスト フィールドをmapped = falseに設定するだけでよいのか、これがフォームを自分でハードコーディングする必要があるインスタンスなのか、フォームビルダー内でこれを行う方法があるのか​​ どうか疑問に思っています.

4

2 に答える 2

80

formType を使用しないでください。Form Builder を使用するためにエンティティを添付する必要はありません。代わりに配列を使用してください。Symfony ドキュメントのこの小さなセクションを見落としている可能性があります: http://symfony.com/doc/current/form/without_class.html

<?php
// inside your controller ...
$data = array();

$form = $this->createFormBuilder($data)
    ->add('query', 'text')
    ->add('category', 'choice',
        array('choices' => array(
            'judges'   => 'Judges',
            'interpreters' => 'Interpreters',
            'attorneys'   => 'Attorneys',
        )))
    ->getForm();

if ($request->isMethod('POST')) {
    $form->handleRequest($request);

    // $data is a simply array with your form fields 
    // like "query" and "category" as defined above.
    $data = $form->getData();
}
于 2013-06-02T13:37:51.393 に答える
7

createNamedBuilderメソッドを使用してフォームを作成することもできます

$form = $this->get('form.factory')->createNamedBuilder('form', 'form')
            ->setMethod('POST')
            ->setAction($this->generateUrl('upload'))
            ->add('attachment', 'file')
            ->add('save', 'submit', ['label' => 'Upload'])
            ->getForm();
于 2015-08-28T12:23:56.140 に答える