我有一个表单,该表单以这种方式将值发送到控制器:
public function postFormUpdate(ProjectUpdateRequest $request)
{
$inputs = $request->all();
$project = $this->projectRepository->update($inputs['project_id'],$inputs);
//...
}
项目存储库是通过以下方式完成的:
public function update($id, Array $inputs)
{
return $this->save($this->getById($id), $inputs);
}
private function save(Project $project, Array $inputs)
{
// Nullable
if (isset($inputs['project_type'])) {$project->project_type = $inputs['project_type'];}
if (isset($inputs['activity_type'])) {$project->activity_type = $inputs['activity_type'];}
...
}
我的问题是,如果form_field中的project_type为null(不需要输入项目类型或可以将其删除),则isset($ inputs ['project_type'])将为false,更新将为不会被触发。
我想要的是,如果用户已经设置了项目类型,然后想要更改它并将其设置为null,这样,它将无法正常工作。我使用isset的原因是,有时我仅更新一个字段,并且我不希望此字段产生错误,因为它不是输入的一部分并且未设置。
我能做的是使用:
if (isset($inputs['project_type']) || is_null($inputs['project_type'])) {$project->project_type = $inputs['project_type'];}
但是我正在寻找是否有一种更优雅的方式来做到这一点。
谢谢。
答案 0 :(得分:0)
一种更优雅的方法是查看是否在键下设置了任何内容。 因此,请使用array_key_exists
if ( array_key_exists('project_type', $inputs) ){$project->project_type = $inputs['project_type'];}