Laravel - 获得验证错误

时间:2016-02-02 06:15:22

标签: php laravel

在Laravel中,有没有办法知道哪条规则无效。例如:

'email': 'email|max:20'

我们假设我想知道电子​​邮件最大规则失败

3 个答案:

答案 0 :(得分:1)

如果要在考虑特定字段时收到错误消息,请在var element = document.querySelector(th[data-field='realName']); if(element) element.setAttribute("data-i18n", "realName"); 数组上提及验证对象key的名称。 Ref

  

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

messages
  

您也可以在没有消息的情况下访问失败的验证规则数组。为此,请使用失败的方法:

if ($validator->fails())
{
    $messages = $validator->messages();    
}
  

检索字段的所有错误消息

$failed = $validator->failed();

答案 1 :(得分:0)

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

使用Bootstrap类显示错误的示例,取自文档。将它放在Blade模板中的某个位置:

@if (count($errors) > 0)
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

official documentation

中查看更多详情

答案 2 :(得分:0)

在我看来,最好为电子邮件max使用自定义验证邮件。我假设你这样做

$data = 'data_to_validate';
$rule  = array('email': 'email|max:20') ;
$validator = Validator::make($data,$rule);

为此类

添加电子邮件max的自定义验证

$message = array('email.max' => 'Exceeded max. email length');

新验证员

$validator = Validator::make($data,$rule,$message);

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