Symfony2 createFormBuilder字段名称前缀没有实体

loo*_*ers 4 symfony

使用createFormBuilder在Symfony2中创建了一个表单,它不需要实体,仅用于搜索.需要更改表单名称和输入名称.

    $form = $this->createFormBuilder(null, array(
                'action' => $this->generateUrl('route'),
                'method' => 'GET',
        'csrf_protection' => false,
        'attr' => array('name' => 'search'),
            ))
            ->add('query', 'text', array(
                'required' => false,
            ))
            ->getForm();
Run Code Online (Sandbox Code Playgroud)

呈现的HTML如下:

<form class="" method="GET" action="route" name="form">
<div class="errors"></div>
<div id="form" name="search">
<div>
<label for="form_query">Query</label>
<input id="form_query" type="text" value="king" name="form[query]">
</div>
</div>
<p>
</form>
Run Code Online (Sandbox Code Playgroud)

如何更改表单名称?目前它是形式,这意味着div id也是形式,可以改为搜索吗?

其次输入应该有一个名称作为查询而不是形式[查询]?

我已经看过有关使用没有实体的表单的文档,但我看不到如何更改这些属性.

最终结果应该是:

<form class="" method="GET" action="route" name="search">
<div class="errors"></div>
<div id="search">
<div>
<label for="search_query">Query</label>
<input id="search_query" type="text" value="king" name="query">
</div>
</div>
<p>
</form>
Run Code Online (Sandbox Code Playgroud)

Dmi*_*kii 7

你应该打电话createNamedBuilder.它允许您在第一个参数中设置自定义表单名称.

例:

    // public function createNamedBuilder($name, $type = 'form', $data = null, array $options = array())
    $form = $this->get('form.factory')->createNamedBuilder('', 'form', array(), array(
        'action' => $this->generateUrl('route'),
        'method' => 'GET',
        'csrf_protection' => false,
        'attr' => array('name' => 'search'),
    ))->add('query', 'text', array(
        'required' => false,
    ))->getForm();
Run Code Online (Sandbox Code Playgroud)

有关更有用的方法,请参阅: \Symfony\Component\Form\FormFactory