Symfony2 – 使用没有任何实体的Form Builder

我一直使用Symfony2的表单生成器,并发现它相当不错。 我发现自己想创build一个search页面,在顶部有一系列的框来过滤search结果。 截至目前,我有三个不同的实体(法官,口译员,律师)。 我希望用户能够input部分或完整的名称,并让它search所有的实体。 我可以处理实际的search部分,但是表单生成器的生成是给我的麻烦。

我想要做的是创build一个不附加到任何特定实体的表单。 我在Symfony网站上阅读的所有教程和文档都是默认情况下应该附加到实体上的。 我想知道如果我应该只是将其附加到任何实体,只是将每个文本字段设置为映射= false,如果这是一个实例,我应该只是硬编码自己的forms,或者如果有某种方式在表单构build器。

不要使用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(); } 

你也可以使用createNamedBuilder方法来创build表单

 $form = $this->get('form.factory')->createNamedBuilder('form', 'form') ->setMethod('POST') ->setAction($this->generateUrl('upload')) ->add('attachment', 'file') ->add('save', 'submit', ['label' => 'Upload']) ->getForm();