我编写了一个自定义验证规则来检查输入字段是否是包含6个数字的字符。
以下是代码
Validator::extend('patterncheck', function($filed, $value, $parameter) {
$pattern = '/^[a-zA-Z][0-9]{6}$/';
return preg_match($pattern, $value);
});
$messages = array(
'patterncheck' => 'The :attribute is not correct'
);
$credential = array(
'country' => $Invent['country'],
'patternnum' => $Invent['pattern-num']
);
$rules = array (
'country' => 'required',
'patternnum' => 'alpha_num|required|max:7|min:7|patterncheck'
);
$validate = Validator::make($credential, $rules, $messages);
if($validate->fails()) {
return Redirect::back()->withErrors($validate);
} else {
return Redirect::back()->with('msg', 'correct');
}
在重定向页面中,显示错误消息或正确的消息
<span>
@if ($errors->has('patternnum'))
@foreach ($errors->get('patternnum') as $errormsg)
{{{$errormsg}}}
@endforeach
@else
{{{Session::get('msg')}}}
@endif
</span>
如果我输入错误的字符串,如abc1234,ww11111,它可以正常工作并显示错误消息。 但是如果输入字符串如w123456,a232323应该与模式匹配,则它不起作用,重定向的页面不会显示“正确”的消息。
然后我重写如下代码,然后输入w123456,a232323,重定向的页面显示“不正确”的消息,这意味着它仍然转到$ validate-&gt; failed()条件。但是,如果它仍然失败,为什么重定向页面不会在上面的代码中显示错误信息?
if($validate->fails()) {
return Redirect::back()->with('msg', 'incorrect');
}
有什么问题?是因为$ pattern值错了吗?