Laravel custom validation rule
如何为输入创建自定义验证规则,该值必须是整数并以120开头?
我已经阅读过关于制作自定义消息但没有理解规则的内容。
我想使用正则表达式来验证数据。
我是Laravel的新手,这就是为什么现在无法想象如何做到这一点。
自定义验证以在
现在我正在验证这样的数据:
1 2 3 4 5 6 7 8 9 | $this->validate($request, [ 'user_id' => 'integer|required', 'buy_date' => 'date', 'guarantee' => 'required|unique:client_devices|number', 'sn_imei' => 'required|unique:client_devices', 'type_id' => 'integer|required', 'brand_id' => 'integer|required', 'model' => 'required' ]); |
我想添加自定义验证的输入是
最快的方法是在控制器操作中使用内联验证器:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public function store(Request $request) { $validator = Validator::make($request->all(), [ 'number' => [ 'regex' => '/^120\d{11}$/' ], ]); if ($validator->fails()) { return redirect('post/create') ->withErrors($validator) ->withInput(); } return view('welcome'); } |
其中
如果您要进行大量验证,则可能需要考虑使用表单请求,作为整合大量验证逻辑的方法。
您可以在控制器中创建自定义验证,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | $name = Input::get('field-name') $infoValidation = Validator::make( array( // Input array 'name' => $name, ), array( // rules array 'name' => array("regex:/^120\d{11}$"), ), array( // Custom messages array 'name.regex' => 'Your message here', ) ); // End of validation $error = array(); if ($infoValidation->fails()) { $errors = $infoValidation->errors()->toArray(); if(count($errors) > 0) { if(isset($errors['name'])){ $response['errCode'] = 1; $response['errMsg'] = $errors['name'][0]; } } return response()->json(['errMsg'=>$response['errMsg'],'errCode'=>$response['errCode']]); } |
希望这可以帮助。
从Laravel 5.5开始,您可以直接在
1 2 3 4 5 6 | public function store(Request $request) { $request->validate([ 'guarantee' => 'regex:/^120\d{11}$/' ]); } |