首页 > 解决方案 > $request->request->replace() 它有什么作用?

问题描述

我正在浏览 symfony 中的一些代码,我发现

$request->request->replace()

实际上,一个表单被发布并在一个函数中获取它的值,比如说,

public function someFunction(Request $request){
    $data = $request->request->all() ? : json_decode($request->getContent(), true);
    $request->request->replace($data);
}

当我倾倒时,

$request->request->replace($data)

结果为空。我不明白为什么要使用它,它有什么好处?

我搜索了一下,有人说它是用来清理数据的,有人说我们不应该用它来替换请求中的所有参数,而应该使用 set 方法。

而且我没有得到任何它,因为我是 symfony 的新手。

$request->request->replace() 对提供给它的参数做了什么?

标签: symfonysymfony4symfony-4.2

解决方案


您的 $request 是Symfony\Component\HttpFoundation\Request的一个实例 。使用 $request 您可以访问诸如请求、查询、cookie、属性、文件、服务器、标头等属性。这些属性中的每一个都是Symfony\Component\HttpFoundation\ParameterBag类型。ParameterBag 的实例使用方法提供对请求参数的访问$request->request->all()。此方法将返回 ParameterBag 实例的“参数”属性。

$request->request->replace($data)ParameterBag 实例中的“参数”属性设置为 $data。

replace() 方法也没有任何返回类型,这就是为什么当你转储时$request->request->replace($data)你得到 null 作为输出。

如果您想在请求中添加一些额外的参数,那么replace()这不是正确的选择,您应该使用set()ParameterBag 中的方法。


推荐阅读