我有一个Laravel应用程序,正在使用表单请求验证。
我已经实现了以下内容:
public function rules(){
return [
'item_name'=>'required',
'item_description'=> 'required',
];
}
在控制器中,我有以下内容:
public function storeItem(storeItem $request) {
$validated = $request->validated();
...
...
}
}
这可以正常工作,但是因为对于某些项目,并非所有$ request变量都是必需的,所以我想实现一个switch语句,如下所示:
public function rules()
{
$item_type = $this->route('item_type');
switch($item_type) {
case 'type1':
return [
'item_name'=>'required',
'item_description'=> 'required',
];
break;
case 'type2':
return [
'item_name'=>'required',
'item_amount'=> 'required',
'item_favorite'=> 'required',
];
break;
}
}
我回来了以下错误:
传递给Illuminate \ Validation \ Factory :: make()的参数2必须为数组类型,给定null
此错误消息似乎表明我没有返回数组,但是每个开关的情况下我都有return语句,因此不确定为什么我看到此eeror消息。
知道如何解决吗?如果switch语句不是一个好的选择,还有其他想法吗?
解决方法如下:
public function rules()
{
switch($this->request->get('item_type')) {
case 'Type1':
return [
'item_name'=>'required',
'item_description'=> 'required',
];
break;
case 'Type2':
return [
'item_name'=>'required',
'item_amount'=> 'required',
'item_favorite'=> 'required',
];
break;
default:
return [
'item_name'=>'required',
];
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句