如何根据输入请求规则在 laravel 刀片中显示错误消息

Posted

技术标签:

【中文标题】如何根据输入请求规则在 laravel 刀片中显示错误消息【英文标题】:how to display error messages in laravel blade based on input request rule 【发布时间】:2017-10-11 18:58:40 【问题描述】:

在我的 laravel 5.4 应用程序中,我有一个基本的输入表单,其中包含 passwordpassword_confirmation 字段。表单使用 laravel 表单请求验证进行验证。

用于密码字段验证的规则是requiredconfirmed

使用代码显示验证错误消息:$errors->first('password') 如果此验证失败 它返回第一个错误,我想根据规则显示错误。

即,我想在一个地方显示password.required 验证错误消息,在另一个地方显示password.confirmed 验证错误消息。 我已经尝试过这样的事情来获取基于规则$errors->first('password')['confirmed'] 的消息,它返回错误

非法字符串偏移'已确认'。

如何根据验证规则获取错误消息?

【问题讨论】:

【参考方案1】:

如果你回顾一下错误包是如何构建的,我认为你不能轻易地做你想做的事。

ViewErrorBag #357 ▼
  #bags: array:1 [▼
    "default" => MessageBag #358 ▼
      #messages: array:3 [▼
        "name" => array:1 [▼
          0 => "The field Name is required."
        ]
        "username" => array:1 [▼
          0 => "The field Username is required."
        ]
        "password" => array:1 [▼
          0 => "The field Password is required."
        ]
      ]
      #format: ":message"
    
  ]

以上只是我的应用程序中的一个示例错误包。

【讨论】:

我在我的应用程序中看到了相同的结构。我需要知道是否有任何方法可以使用自定义变量或规则名称来索引数组。例如:从您的示例中,数组 name 使用数字进行索引,我需要的是使用规则名称对数组进行索引。即,` "name" => array:1 [▼ 'required' => "字段名称为必填项。" ]` 嗯,我想不出你能做到这一点的任何方法。因为您无法控制请求验证功能。如果您在控制器内部进行自己的验证,也许您会更幸运?

以上是关于如何根据输入请求规则在 laravel 刀片中显示错误消息的主要内容,如果未能解决你的问题,请参考以下文章

Laravel刀片“旧输入或默认变量”?

显示来自 @foreach 的 Laravel 刀片中的所有输入

@include 之后刀片未在刀片中显示内容 - Laravel 4.2

收到 422 错误后,我无法在刀片中显示错误消息

如何在 laravel 刀片中显示 iframe

在 laravel 刀片中显示 JSON 数组