Laravel自定义验证在某些情况下不起作用

时间:2014-09-06 06:22:25

标签: php laravel-4

我编写了一个自定义验证规则来检查输入字段是否是包含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值错了吗?

0 个答案:

没有答案