Laravel:无法设置对象值

时间:2016-06-13 02:57:38

标签: php laravel

我在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.已返回。

为什么DonorPrefixMx.的值不是$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

编辑:我确信代码的其他部分就像魅力一样。事情很顺利,直到我尝试添加这个'默认值'功能。

1 个答案:

答案 0 :(得分:1)

您无法设置请求参数,例如$request->DonorPrefix = '...'

要在请求上设置参数,您需要使用offsetSet,如下所示:

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

此外,has()方法已经确保它是非空字符串,因此您可以删除部分检查,并简化代码,如下所示:

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