我正在尝试使用Request
修改Laravel merge
对象以更新密钥trial_end
。
我使用以下代码执行此操作...
if ($this->request->get('trial_end', '')) {
$this->request->merge(array('trial_end' => 'test'));
}
dd($this->request->all(), $this->request->get('trial_end'));
我希望$this->request->get('trial_end')
为test
,但事实并非如此。 $this->request->all()
返回我的预期。
转储结果
array:1 [
"trial_end" => "test"
]
"12/4/2018"
为什么不返回更新后的值?
答案 0 :(得分:1)
想出来。解决方案是改变
$this->request->get('trial_end');
到
$this->request->input('trial_end');
这是有效的,因为input()
在all()
之前将getInputSource()->all()
中的数据添加到data_get
,而get()
只执行了data_get
if ($this->request->has('trial_end')) {
$this->request->merge(['trial_end' => 'test']);
}
dd($this->request->all(), $this->request->input('trial_end'));
输入参数(预修改)。
新代码(由Alex建议更改)
array:1 [
"trial_end" => "test"
]
"test"
新结果
[FunctionName("TokenPolicy")]
public static HttpResponseMessage Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "TokenPolicy/{IssuerID}/{SpecificationID}")]HttpRequestMessage req, string IssuerID, string specificationID, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request. TokenPolicy");
// Fetching the name from the path parameter in the request URL
return req.CreateResponse(HttpStatusCode.OK, "data " + specificationID);
}
希望这可以帮助遇到此问题的任何其他人。
答案 1 :(得分:0)
问题不在于作业,但通过比较,我个人最好的方法是检查请求中的值是否已设定。
public function test(Request $request){
if (!$request->has('trial_end')) { //this is what you have wrong
$request->merge(array('trial_end' => 'test'));
}
return $request->get('trial_end');
}
问候