Laravel带有switch语句的表单请求验证

wiwa1978

我有一个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语句不是一个好的选择,还有其他想法吗?

wiwa1978

解决方法如下:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章