我尝试在Symfony-Application中实现搜索表单。 POST工作正常,但我想使用/search?q=foo
。我有一个method=GET
的表单,但我无法使用以下请求将我的请求绑定到表单:
search?form%5B_token%5D=HC5M4nG-B-r5BUUSmCchkryqNQyu9RvDDlTvcTDuFFY&form%5Bq%5D=foobar
这是我的表格
$data = array();
return $this->createFormBuilder($data)
->add('q', 'text')
->getForm();
当前的控制器
/**
* @var $form Form
*/
$form = $this->getSearchForm();
if ($request->isMethod('GET')) {
// contains q = 'foobar'
dump($_GET);
// null
dump($request->request->get('q'));
// null
dump($request->request->get('form'));
$form->submit($request->request->get($form->getName()));
$form->handleRequest($request);
$data = $form->getData();
// null
dump($data);
...
}
表单模板
{{ form_start(form, {'action': path('search'), 'method': 'GET', 'attr': { 'class' : 'navbar-form navbar-left', 'role' : 'search' }}) }}
{{ form_errors(form) }}
<div class="form-group">
{{ form_label(form.q) }}
{{ form_errors(form.q) }}
{{ form_widget(form.q, { 'attr': {'placeholder': 'Find' }}) }}
</div>
<button type="submit" class="btn btn-default">Find</button>
{{ form_end(form) }}
答案 0 :(得分:1)
$request->request->all()
是所有$_POST
参数。
$request->query->all()
是所有$_GET
参数。
您应该使用$request->query->get('q')
或$request->get('a')
(将通过每个参数包)来获取参数。
有关详细信息,请参阅the docs。