Laravel验证:检查验证程序失败的原因


Laravel Validation: check why validator failed

如果有办法检查验证器是否因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()) {

用外行的话来说,我基本上想知道:"验证失败是因为电子邮件地址不是唯一的吗?"

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

if ($validator->fails()) {
    $failedRules = $validator->failed();
    if(isset($failedRules['email_address']['Unique'])) {
    ...

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

控制器

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

这将返回一条消息,无论错误是什么。电子邮件不匹配。字段是必需的。胡说八道

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

您也可以尝试var_dump此语句:

var_dump($validation->errors());死亡