Symfony-Form中的进程GET始终为空

时间:2015-03-21 10:22:04

标签: forms symfony

我尝试在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) }}

1 个答案:

答案 0 :(得分:1)

$request->request->all()是所有$_POST参数。

$request->query->all()是所有$_GET参数。

您应该使用$request->query->get('q')$request->get('a')(将通过每个参数包)来获取参数。

有关详细信息,请参阅the docs