Symfony 不返回 POST-value
Symfony not returning POST-value
我正在尝试使用 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'));
returns这个:
array(3) { ["keyword"]=> string(6) "potato" ["search"]=> string(0) "" ["_token"]=> string(43) "2KIt0IYl3Ay-4vr-dEINKe3QNRxvMqmAFK1ILGflwoA" }
表示变量存在。但是 $searchName 始终保持为 NULL。
这让我感到困惑,因为这个例子几乎直接来自 Symfony 书(3.1 版,第 156 - 157 页)。可能是什么问题?
您应该使用以下方法从表单中检索数据(作为数组):
$data = $form->getData();
如果您想检索自定义值,例如 keyword
,请尝试:
$keyword = $form->get('keyword')->getData();
我正在尝试使用 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'));
returns这个:
array(3) { ["keyword"]=> string(6) "potato" ["search"]=> string(0) "" ["_token"]=> string(43) "2KIt0IYl3Ay-4vr-dEINKe3QNRxvMqmAFK1ILGflwoA" }
表示变量存在。但是 $searchName 始终保持为 NULL。 这让我感到困惑,因为这个例子几乎直接来自 Symfony 书(3.1 版,第 156 - 157 页)。可能是什么问题?
您应该使用以下方法从表单中检索数据(作为数组):
$data = $form->getData();
如果您想检索自定义值,例如 keyword
,请尝试:
$keyword = $form->get('keyword')->getData();