Php Laravel-获取验证错误

Php Laravel-获取验证错误,php,laravel,Php,Laravel,在拉威尔,有没有办法知道哪条规则是无效的。例如: 'email': 'email|max:20' 假设我想知道的是email max规则是否失败了默认情况下,所有验证错误都将闪现到会话中,并通过模板中的$errors数组可用。每个失败的规则将生成一个单独的错误 使用引导类显示错误的示例,摘自文档。将其放置在刀片模板中的某个位置: @if (count($errors) > 0) <div class="alert alert-danger"> <

在拉威尔,有没有办法知道哪条规则是无效的。例如:

'email': 'email|max:20'

假设我想知道的是email max规则是否失败了

默认情况下,所有验证错误都将闪现到会话中,并通过模板中的$errors数组可用。每个失败的规则将生成一个单独的错误

使用引导类显示错误的示例,摘自文档。将其放置在刀片模板中的某个位置:

@if (count($errors) > 0)
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif
@if(计数($errors)>0)
    @foreach($errors->all()作为$error)
  • {{$error}}
  • @endforeach
@恩迪夫

查看

中的更多详细信息默认情况下,所有验证错误都将闪现到会话中,并通过模板中的$errors数组提供。每个失败的规则将生成一个单独的错误

使用引导类显示错误的示例,摘自文档。将其放置在刀片模板中的某个位置:

@if (count($errors) > 0)
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif
@if(计数($errors)>0)
    @foreach($errors->all()作为$error)
  • {{$error}}
  • @endforeach
@恩迪夫

如果要获取考虑特定字段的错误消息,请参阅

中的更多详细信息,然后在
消息
数组中提及验证对象的名称

如果验证失败,您可以从验证器检索错误消息

您还可以访问一组失败的验证规则,而不需要消息。为此,请使用失败的方法:

检索字段的所有错误消息


如果您想获得考虑特定字段的错误消息,请在
messages
数组中提及验证对象的名称
key

如果验证失败,您可以从验证器检索错误消息

您还可以访问一组失败的验证规则,而不需要消息。为此,请使用失败的方法:

检索字段的所有错误消息


在我看来,最好对电子邮件
max
使用自定义验证消息。我想你是这样做的

$data = 'data_to_validate';
$rule  = array('email': 'email|max:20') ;
$validator = Validator::make($data,$rule);
像这样为email
max
添加自定义验证

$data = 'data_to_validate';
$rule  = array('email': 'email|max:20') ;
$validator = Validator::make($data,$rule);
$message=array('email.max'=>'超过了最大电子邮件长度')

新验证器

$validator=validator::make($data、$rule、$message)


现在,如果电子邮件
max
$validator->fails()
,那么
$validator->messages()
将显示您的自定义验证。通过这种方式,您可以知道您的
max
规则失败。

在我看来,最好对电子邮件
max
使用自定义验证消息。我想你是这样做的

$data = 'data_to_validate';
$rule  = array('email': 'email|max:20') ;
$validator = Validator::make($data,$rule);
像这样为email
max
添加自定义验证

$data = 'data_to_validate';
$rule  = array('email': 'email|max:20') ;
$validator = Validator::make($data,$rule);
$message=array('email.max'=>'超过了最大电子邮件长度')

新验证器

$validator=validator::make($data、$rule、$message)



现在,如果电子邮件
max
$validator->fails()
,那么
$validator->messages()
将显示您的自定义验证。这样,您可以知道您的
max
规则失败。

您可以自定义验证消息,以便为电子邮件
max
设置自定义消息。如何自定义验证消息?我不想更改消息,我想知道“email.max”的确切规则被破坏了。您是否检查了此答案?您可以自定义验证消息,以便为email
max
设置自定义消息。本博客提供了更多关于如何自定义验证消息的详细信息?我不想更改消息,我想知道“email.max”的确切规则被打破了。你是否检查了此答案我不想要消息我想要密钥,例如mail.max。是的,我想要,我收到的是消息,但不是失败的规则获取
规则的目的是什么?
?在条件之外回显$messages我不想要消息我想要密钥,例如mail.max。是的,我收到的是消息,但不是失败的规则获取
规则的目的是什么
?在条件之外回显$消息错误将包含规则消息,但不包含失败的规则。比如:“mail.max”是的,因为通常最终用户不需要知道规则名称。但是您可以1)更改默认消息并包括规则名称,例如$messages=['email.required'=>'email.required'];2) 扩展验证器类并正确添加此功能。这完全取决于您的需求(问题中没有透露),如果您绝对确定希望在输出数组中看到规则名称而不是正确的错误消息,只需覆盖验证器的addError()方法,例如:受保护的函数addError($attribute,$rule,$parameters){$this->messages->add($attribute,$attribute.'..$rule);}我不想覆盖该消息。我想做的事情是在违反max规则时执行不同的逻辑,在违反电子邮件规则时执行其他逻辑。恐怕,如果不扩展验证程序类,就无法执行此操作。Laravel的优点是,很容易添加自己的扩展。不扩展的肮脏方式是-生成自定义错误或者像我之前建议的那样,稍后解析$error数组,并对不同的邮件做出不同的反应。你可以触发一些特殊的邮件规则违规行为。但这不是一种很好的方法,更多的是一种黑客/解决方法。错误将包含规则消息,但不包含失败的规则。例如:“mail.max”是的,bec因为最终用户通常不需要知道规则名称。但是您可以1)更改默认消息并包含规则名称,例如$messages=['email.required'=>'email.required'];2) 扩展验证器类并正确添加此功能。这完全取决于您的要求(问题中未披露)