在Symfony 2中获取所有请求参数


68

在symfony 2控制器中,每次我想从发布中获取值时,都需要运行:

$this->getRequest()->get('value1');
$this->getRequest()->get('value2');

有什么方法可以将它们合并为一个返回数组的语句?就像Zend的getParams()一样?

Answers:


152

您可以$this->getRequest()->query->all();获取所有GET参数并$this->getRequest()->request->all();获取所有POST参数。

因此,在您的情况下:

$params = $this->getRequest()->request->all();
$params['value1'];
$params['value2'];

有关Request类的更多信息,请参见http://api.symfony.com/2.8/Symfony/Component/HttpFoundation/Request.html


7
要获取路径中参数的值(例如/ posts / {id}),请使用$request->attributes->all()。我当时$request->get()想这是获取此数据的唯一方法,来到这里寻找另一种方法。
Dreen 2014年

11

最佳实践是使用最近的Symfony 2.6+版本,在这种情况下,请求将作为带有操作的参数传递,您无需显式调用$ this-> getRequest(),而只需调用$ request-> request-> all()

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
use Symfony\Component\HttpKernel\Exception\NotAcceptableHttpException;
use Symfony\Component\HttpFoundation\RedirectResponse;

    class SampleController extends Controller
    {


        public function indexAction(Request $request) {

           var_dump($request->request->all());
        }

    }

0

由于您在控制器中,因此我们假设您正在传递参数Request;您可以访问所有帖子$ request-> request-> all(); 返回键值对数组;另一方面,在使用get请求时,您可以使用$ request-> query-> all();访问数据。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.