好的,这是一个新手问题,但我在任何地方都找不到答案。在Symfony2中的控制器中,我想从我的一个表单中访问POST值。在控制器中,我有:
public function indexAction() { $request = $this->get('request'); if ($request->getMethod() == 'POST') { $form = $this->get('form.factory')->create(new ContactType()); $form->bindRequest($request); if ($form->isValid()) { $name_value = $request->request->get('name');
不幸的$name_value是没有返回任何东西。我究竟做错了什么?谢谢!
$name_value
此解决方案从2.3开始弃用,并将在3.0中删除,请参阅文档
$form->getData();
给你一个数组的形式参数
摘自symfony2书第162页(第12章:表格)
[…]有时,您可能只想使用没有类的表单,并取回已提交数据的数组。这实际上非常简单:
public function contactAction(Request $request) { $defaultData = array('message' => 'Type your message here'); $form = $this->createFormBuilder($defaultData) ->add('name', 'text') ->add('email', 'email') ->add('message', 'textarea') ->getForm(); if ($request->getMethod() == 'POST') { $form->bindRequest($request); // data is an array with "name", "email", and "message" keys $data = $form->getData(); } // ... render the form }
您还可以直接通过请求对象访问POST值(在这种情况下为“名称”),如下所示:
$this->get('request')->request->get('name');
但是,请注意,在大多数情况下,使用getData()方法是一个更好的选择,因为在表单框架对数据进行转换之后,它会返回数据(通常是对象)。
当您要访问表单令牌时,必须使用问题的答案, $postData = $request->request->get('contact');因为getData()从数组中删除了元素
$postData = $request->request->get('contact');
getData()
从2.3开始,您应该使用handleRequest而不是bindRequest:
handleRequest
bindRequest
$form->handleRequest($request);