要创建所需的 URL,您必须设置表单名称createNamedBuilder
,您只需将其留空即可''
。要删除_token
,您需要设置csrf_protection
为 false。请查看 csrf 保护以确保您知道如果关闭它会发生什么。
将您的代码更改为以下内容应该会给您想要的结果。
$form = $this->get('form.factory')->createNamedBuilder('', 'form', $search, array(
'csrf_protection' => false,
))->setMethod('GET')
->add('q', 'text')
->add('search', 'submit')
->getForm();
这应该产生一个 URL,如:
search?q=red+apple&search=
编辑:
如果你想摆脱&search=
,一种方法是search
从submit
改为button
。
->add('search', 'button')
这将需要 javascript 来提交您的表单。这是jquery中的简单示例:
//This assumes one form and one button
$(document).ready(function(){
$('button').click(function(){
$('form').submit();
});
});
这将产生一个 URL,如:
search?q=red+apple
要访问 GET 变量,您可以在控制器中放置如下内容:
public function yourSearchAction(Request $request)
{
// your code ...
$form->handleRequest($request);
if ($form->isValid()) {
$getVars = $form->getData();
$q = $getVars['q'];
$page = $getVars['page'];
$billing = $em
//Do something
}
return //your code
}
只是为了澄清您是否要添加page
到您的 URL,您需要将其添加到您的表单中:
->add('page', 'text')