【问题标题】:Is that possible to have multiple rules function in single Request class?是否可以在单个请求类中具有多个规则功能?
【发布时间】:2016-04-08 12:13:45
【问题描述】:

我有如下请求类。

class CategoryRequest extends Request
{
    public function response(array $errors){
        return \Redirect::back()->withErrors($errors)->withInput();
    }

    public function authorize()
    {
        return false;
    }

    public function rules()
    {
        return [
            'Category' => 'required|unique:tblcategory|max:25|min:5'
        ];
    }
}

有规则功能。

在控制器中,有多个方法以请求为参数。他们中的大多数在验证的观点上有所不同。我的意思是,如果我是管理员,。我可以更新 4 个字段。如果我是经理,我可以更新 3,如果我是普通用户,我可以更新 2。所以验证会根据角色而改变。

Request类中是否可以有多个规则功能?

【问题讨论】:

    标签: php laravel laravel-5 laravel-validation laravel-5.2


    【解决方案1】:

    你可以在这里使用任何你想要的条件,所以你可以这样做:

    public function rules()
    {
        $rules = [];
        if (Auth::user()->isAdmin()) {
           $rules['Category'] = '...';
        } 
        elseif (Auth::user()->isManager()) {
           $rules['Category'] = '...';
        }        
    
        return $rules;
    }
    

    当然你需要在你的User模型中创建isAdminisManager

    【讨论】:

    • 会不会是 `$rules[] = 'Category' => 'required|unique:tblcategory|max:25|min:5'; ?
    • 是的,你可以在这里放任何你想要的规则,和你的例子一样
    • 我试过这个$rules = []; if(\Auth::user()->RoleID == \App\Enumeration\Role\RoleType::Admin) { $rules[] = 'Category' => 'required|unique:tblcategory|max:25|min:5'; } 并得到错误:语法错误,意外'=>' (T_DOUBLE_ARROW)
    • 我已经更新了我的答案,你可以把Category放在规则里面,所以它可能是$rules['Category'] = 'required|unique:tblcategory|max:25|min:5';
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 2012-12-17
    • 2020-05-16
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多