$ request-> request-> replace()它做什么?

时间:2019-05-27 05:25:45

标签: symfony symfony4 symfony-4.2

我正在使用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()对提供的参数有什么作用?

1 个答案:

答案 0 :(得分:1)

您的$ request是 Symfony \ Component \ HttpFoundation \ Request 的一个实例 。使用$ request,您可以访问属性,例如请求,查询,cookie,属性,文件,服务器,标头。这些属性的每个类型均为 Symfony \ Component \ HttpFoundation \ ParameterBag 。 ParameterBag实例提供使用方法$request->request->all()访问请求参数的权限。此方法将返回ParameterBag实例的'parameters'属性。

$request->request->replace($data)会将ParameterBag实例中的'parameters'属性设置为$ data。

而且replace()方法没有任何返回类型,这就是为什么您转储$request->request->replace($data)时输出为null的原因。

如果要向请求中添加一些额外的参数,则replace()不是正确的选择,而是应在ParameterBag中使用set()方法。