74

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

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

有没有办法将这些合并到一个返回数组的语句中?Zend 的 getParams() 之类的东西?

4

4 回答 4

161

您可以$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

于 2012-06-27T13:30:22.747 回答
12

使用最近的 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());
        }

    }
于 2015-10-25T09:16:47.903 回答
2

由于您在控制器中,因此为操作方法提供了一个Request参数。

您可以使用 访问所有 POST 数据$request->request->all();。这将返回一个键值对数组。

使用 GET 请求时,您可以使用$request->query->all();

于 2020-10-01T07:31:28.740 回答
1

对于Symfony 3.4,您可以访问GETPOST的数据,就像这样

邮政:

$data = $this->request->request->all();

得到:

$data = $this->request->query->all();
于 2021-09-19T12:46:02.617 回答