如何在Symfony 4中获取查询字符串

4

我正在尝试在Symfony 4中访问查询字符串参数。

namespace App\Controller;

use Symfony\Component\HttpFoundation\RequestStack;

class Home extends Controller {

    private $request;

    public function __construct(RequestStack $request){

        $this->request = $request;
    }

    public function getQueryString(){

       $req = $this->request->getCurrentRequest();

       print_r($req); // see all the request data

       // $req -> grab the query parameters
       // return query parameters
    }
}

我正在使用 RequestStack,当我打印 getCurrentRequest() 的结果时能够看到许多请求数据(包括我需要的查询参数),但大部分方法都是 private,我不能访问它们。

在Symfony中,如何获取请求的URL组件(包括查询参数)?

3个回答

6

对于 GET 请求:

$this->request->getCurrentRequest()->query->get('name_query');

对于POST请求:

$this->request->getCurrentRequest()->request->get('name_query');

3
// retrieves $_GET and $_POST variables respectively
$request->query->get('id');
$request->request->get('category', 'default category');

源自https://symfony.com/doc/4.3/introduction/http_fundamentals.html#symfony-request-object

这篇文章介绍了Symfony请求对象,它是一个封装了HTTP请求信息的对象。Symfony请求对象可以让你轻松地获取HTTP请求的各种信息,例如请求方法、URL参数和请求正文。此外,Symfony请求对象还提供了一些有用的方法来处理请求数据,如解析JSON和XML数据。


1
这适用于Symfony 6:
GET
$value = $request->query->get('name_query');

POST

$value = $request->request->get('name_query');

BODY(REST API在body内返回JSON响应)

$value = $request->getContent();

标题

$value = $request->headers->get('X-header-name');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接