Symfony没有返回POST值

时间:2016-06-15 07:33:17

标签: php post http-post symfony

我尝试使用Symfony实现简单的搜索表单并尝试访问控制器内的POST值而没有成功。

我在控制器中有以下代码:

public function foodAction(Request $request)
{

    $defaultData = array('message' => 'Type your message here');

    $form = $this->createFormBuilder($defaultData)
        ->add('keyword', SearchType::class, array('attr' => array('class' => 'form-control', 'placeholder' => 'Ruokahaku'), 'label' => false))
        ->add('search', SubmitType::class, array('attr' => array('class' => 'btn btn-secondary'), 'label' => 'Hae'))
        ->getForm();

    $form->handleRequest($request);

    if($form->isValid()) {  

        $searchName = $request->request->get('keyword');

        return $this->render(
            'default/index.html.twig',
            array('foodsearched' => $searchName,
            'form' => $form->createView())
        );
    }

    return $this->render('default/index.html.twig', array(
        'form' => $form->createView()
    ));

}

但是,$ searchName始终为null,即使

也是如此
var_dump($request->request->get('form')); 

返回:

array(3) { ["keyword"]=> string(6) "potato" ["search"]=> string(0) "" ["_token"]=> string(43) "2KIt0IYl3Ay-4vr-dEINKe3QNRxvMqmAFK1ILGflwoA" } 

这意味着变量存在。但是$ searchName始终保持NULL。 这让我很难过,因为这个例子与Symfony一书(版本3.1,第156-157页)非常相似。可能是什么问题?

1 个答案:

答案 0 :(得分:0)

您应该使用以下命令从表单中检索数据(作为数组):

$data = $form->getData();

如果您想要检索自定义值,例如keyword,请尝试:

$keyword = $form->get('keyword')->getData();