我有一份登记表。我正在验证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',]);
答案 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()方法的实际代码之前,将检查您的验证。
如果您对如何运作感兴趣,请检查照明\路由\控制器,然后选择照明\基础\验证\验证请求特征。