我在Laravel中有一个表单,当它提交时,将调用函数donorUpdate
,它会将数据保存到数据库中。这是函数的完全代码。
我的目标是,表单包含字段名DonorPrefix
,当它为空时,默认值应为Mx.
。我已经尝试了下面的代码,但它不起作用。
public function donorUpdate(Request $request, Donor $donor){
if($request->has('DonorPrefix') == false || $request->DonorPrefix == '' || $request->DonorPrefix == null){
$request->DonorPrefix = 'Mx.';
}
$donor->update($request->all());
return redirect('/donor/'.$donor->DonorID);
}
这是奇怪的部分开始的地方:我的调试尝试是我评论了return redirect('/donor/'.$donor->DonorID);
行并替换为return $request->all()
,DonorPrefix
的值是""
(空字符串)。
但是,当我尝试return $request->DonorPrefix
时,前缀Mx.
已返回。
为什么DonorPrefix
上Mx.
的值不是$request->all()
,而Mx.
上return $request->DonorPrefix
的值是version: '2'
volumes:
app-data:
driver: local
services:
web:
image: nginx:latest
depends_on:
- app
volumes:
- ./site.conf:/etc/nginx/conf.d/default.conf
- app-data:/app
app:
build: .
volumes:
- app-data:/app
?
编辑:我确信代码的其他部分就像魅力一样。事情很顺利,直到我尝试添加这个'默认值'功能。
答案 0 :(得分:1)
您无法设置请求参数,例如$request->DonorPrefix = '...'
。
要在请求上设置参数,您需要使用offsetSet
,如下所示:
$request->offsetSet('DonorPrefix', 'Mx.');
此外,has()
方法已经确保它是非空字符串,因此您可以删除部分检查,并简化代码,如下所示:
if(!$request->has('DonorPrefix')){
$request->offsetSet('DonorPrefix', 'Mx.');
}