如何为输入创建自定义验证规则,哪个值必须是整数并以120开头?
我已经阅读过关于制作自定义消息但没有理解规则的内容。
我想使用正则表达式来验证数据。 ^120\d{11}$
这是我的正则表达式。
我是Laravel的新手,这就是为什么现在无法想象如何做到这一点。
在$this->validate($request, []);
现在我正在验证这样的数据:
$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'
]);
我想添加自定义验证的输入是guarantee
答案 0 :(得分:1)
您可以在控制器中创建自定义验证:
$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']]);
}
希望这有帮助。
答案 1 :(得分:1)
最快的方法是控制器操作中的inline validator:
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');
}
number
是请求中提交的字段的name
。
如果您要进行大量验证,可能需要考虑使用Form Request作为整合大量验证逻辑的方法。
答案 2 :(得分:0)
从Laravel 5.5开始,您可以直接在request
对象上进行验证。
public function store(Request $request)
{
$request->validate([
'guarantee' => 'regex:/^120\d{11}$/'
]);
}