Laravel版本6.x
场景:为添加或者更新用户的时候自动验证表单
创建表单请求
使用 Artisan 命令 make:request 来创建表单请求类:
php artisan make:request Request
这会在 app/Http/Requests 目录下创建一个 appHttpRequestsRequest.php 文件,修改代码后
<?phpnamespace AppHttpRequests;use IlluminateFoundationHttpFormRequest;class Request extends FormRequest{ /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true;// 改为true 不然报403 } /** * 重写错误返回 * @param Validator $validator * @throws ValidationException * @author: * @date: 2019/5/20 13:44 */ public function failedValidation(Validator $validator) { $message = $validator->errors()->all(); $response = response()->json([ 'status' => 200, 'message' => $message[0], 'data' =>[] ]); throw new ValidationException($validator, $response); } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ // ]; }}
然后再创建一个用户的请求表单验证类去继承appHttpRequestsRequest.php 文件下的类
使用 Artisan 命令 make:request 来创建表单请求类:
php artisan make:request UsersRequest
<?phpnamespace AppHttpRequests;class UsersRequest extends Request{ /** * 获取适用于请求的验证规则 * * @return array */ public function rules() { return [ 'mobile' => 'sometimes|required|regex:/^1[34578][0-9]{9}$/|unique:users,mobile', ]; } /** * 获取已定义验证规则的错误消息 * * @return array */ public function messages() { return [ 'mobile.required' => '手机号码必填', 'mobile.regex' => '手机号码格式不正确', 'mobile.unique' => '手机号已存在', ]; }}
然后就可以在控制上使用表单验证类了
use AppHttpRequests甥敳獲Request;public function store(UsersRequest $request){ return $input = $request->all(); // 接受到的mobile手机号码这个字段就会自动进行验证了}
注意:laravel的表单提交提示的419,需要自行去做处理。
