在laravel 5.2中使控制器清洁可读(特别定义验证)

时间:2016-07-31 15:22:06

标签: php laravel laravel-5.2

我有一份登记表。我正在验证Controller中的字段。 但是它不好,我的控制器会很乱。 其实我希望我的控制器清洁可读。 如何以特定类中的其他方式定义验证?

$validator = Validator::make($request->all(), [
        'username' => 'required|min:4|max:64|unique:users|regex:/[a-zA-Z]+[a-zA-Z0-9_]*/',
        'email' => 'required|email|min:8',
        'title' => '|max:32',
        'full_name' => '|max:32',
        'address' => 'required|max:200',
        'password' => array(
            'required',
            'confirmed',
            'regex:/xx/',
            'min:8'),
        'phone' => 
        'mobile' => 
        'image' => 'size:200',]);

1 个答案:

答案 0 :(得分:2)

您可以使用FormRequest个对象并在那里定义验证。

因此,在您的示例中,您可以创建 RegisterUserRequest

php artisan make:request RegisterUserRequest

然后您可以将验证规则移至 app / Http / Requests / RegisterUserRequest 规则()方法:

public function rules()
{
    return [
        'username' => 'required|min:4|max:64|unique:users|regex:/[a-zA-Z]+[a-zA-Z0-9_]*/',
        'email' => 'required|email|min:8',
        'title' => '|max:32',
        'full_name' => '|max:32',
        'address' => 'required|max:200',
        'password' => array(
            'required',
            'confirmed',
            'regex:/xx/',
            'min:8'), 
        'image' => 'size:200'
    ];
}

还有 authorize()方法,您可以在其中检查经过身份验证的用户是否确实有权更新/创建/删除给定资源。 (相应地返回true / false)。

然后在你的控制器中注入你的FormRequest对象:

public function store(RegisterUserRequest $request)
{
    // your other non-validation code
}

现在,在执行 store()方法的实际代码之前,将检查您的验证。

如果您对如何运作感兴趣,请检查照明\路由\控制器,然后选择照明\基础\验证\验证请求特征。