访问Symfony 2请求对象中的POST值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (64)

在Symfony 2中的控制器中,我希望从我的表单中访问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什么都没返回。

提问于
用户回答回答于

Symfony 2.2

此解决方案自2.3起不再推荐,并将在3.0中删除,见文件

$form->getData();

为窗体参数提供数组。您可能只想使用没有类的表单,并返回提交数据的数组。这其实很简单:

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值(在本例中为“name”),如下所示:

$this->get('request')->request->get('name');

Symfony 2.3

因为2.3你应该使用handleRequest而不是bindRequest:

 $form->handleRequest($request);

用户回答回答于

例如,如果您已经重写了getName()方法的ContactType()返回“Contact”,您可以这样做:

$postData = $request->request->get('contact');
$name_value = $postData['name'];

扫码关注云+社区