Laravel验证:检查验证器失败的原因

时间:2014-08-29 17:50:25

标签: php validation laravel laravel-4

如果有办法检查验证器是否因unique规则而失败?

$rules = array(
            'email_address' => 'required|email|unique:users,email',
            'postal_code' => 'required|alpha_num',
        );

        $messages = array(
            'required' => 'The :attribute field is required',
            'email' => 'The :attribute field is required',
            'alpha_num' => 'The :attribute field must only be letters and numbers (no spaces)'
        );

        $validator = Validator::make(Input::all(), $rules, $messages);

        if ($validator->fails()) {

在外行人看来,我基本上想知道:“验证失败了,因为email_address不是唯一的吗?”

2 个答案:

答案 0 :(得分:18)

检查返回的失败规则数组中的特定规则

if ($validator->fails()) {

    $failedRules = $validator->failed();

    if(isset($failedRules['email_address']['Unique'])) {

    ...

答案 1 :(得分:0)

这将显示错误并告诉您失败的原因:

<强>控制器

if($validation->fails()){

   return Redirect::back()->withErrors($validation)->withInput();
}

foreach($errors->all() as $error) {
  echo $error;
}

在您的刀片模板中添加以下内容:

   @foreach($errors->all() as $error)
        <div>
           {{$error}}
        </div>
   @endforeach

这将返回一条消息,无论错误是什么。电子邮件不匹配。现场是必需的。 Blah blah

您也可以从$ message中删除该电子邮件数组。验证器将为您处理所有这些。如果您想要自定义消息,您只想使用它。

你也可以尝试var_dump这个语句:

的var_dump($ validation-&GT;错误());死;