2016-06-13 134 views
1

我在Laravel中有一个表单,当它提交时,函数donorUpdate即将被调用,它会将数据保存到数据库。这里是确切的函数的代码。Laravel:无法设置对象值

我的目标是,窗体包含字段名称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.返回。

为什么不是DonorPrefixMx.$request->all(),但Mx.return $request->DonorPrefix

编辑:我确定代码的其他部分的作品像魅力。事情是平稳的,直到我试图添加这个'默认值'功能。

回答

1

您不能设置请求参数如$request->DonorPrefix = '...'

要设置参数,你需要使用offsetSet这样的要求:

$request->offsetSet('DonorPrefix', 'Mx.'); 

此外,has()方法已确保它是一个非空字符串这样你就可以删除你的一些检查并简化您的代码,如下所示:

if(!$request->has('DonorPrefix')){ 
    $request->offsetSet('DonorPrefix', 'Mx.'); 
} 
+0

谢谢!奇迹般有效! – srakrn