【问题标题】:Laravel Validation: check why validator failedLaravel 验证:检查验证器失败的原因
【发布时间】:2014-10-23 18:44:15
【问题描述】:

如果有办法检查验证器是否因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 不是唯一的吗?”

【问题讨论】:

  • 也许提供一个通过其他验证规则的输入? (并检查错误消息)。
  • 但是您可以确切地看到我正在检查的输入...email_addresspostal_code

标签: php validation laravel laravel-4


【解决方案1】:

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

if ($validator->fails()) {

    $failedRules = $validator->failed();

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

    ...

【讨论】:

  • 转成json,好像返回{"email_address":{"Unique":["users","email"]}}
  • 已更新。您必须按字段检查它,每个字段都有自己的规则数组。
  • 几乎,但它仍然总是返回假,即使我可以看到它是真的。
  • 更新了,规则Unique 是一个键,所以in_array 不起作用:) 所以我改用isset
【解决方案2】:

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

控制器

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

无论错误是什么,它都会返回一条消息。电子邮件不匹配。字段是必需的。呸呸呸

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

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

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

【讨论】:

  • 是的,但在查看视图之前,我需要知道我的控制器发生了什么故障。
  • 在您的控制器中,您可以使用相同的 foreach,它将显示在您的控制器中。我编辑了我的答案,所以你可以看到
  • $errors->all() 产生Call to a member function all() on a non-object
  • 抱歉,这行不通,因为无论如何它都应该重定向回您的上一页。我会更新答案。
  • 检查我的答案,您也许可以使用 var_dump($validation->errors()); 转储结果。死;
猜你喜欢
  • 2019-05-27
  • 2016-06-20
  • 1970-01-01
  • 1970-01-01
  • 2016-10-28
  • 1970-01-01
  • 2020-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多