使用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)
你应该打电话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
| 归档时间: |
|
| 查看次数: |
2889 次 |
| 最近记录: |