php - Laravel 验证规则 - 获取损坏的规则名称

标签 php laravel validation

场景

我正在 Laravel 中开发一个多语言网站。可以从“管理”部分添加/删除语言。前端部分包含各种表单,由 Controller 使用适当的 FormRequest 对象进行验证。

问题

验证错误消息被硬编码在相应语言的 validation.php 文件中,我无法使用该文件,因为这些语言是动态添加的。看起来 MessageBag 对象只存储消息和相应的字段,但不存储规则名称。

我的解决方案

我将所有验证消息重命名为其相应的规则名称,删除了 :attribute 部分。

问题

有没有办法(最好是直接在 View 中)获取失败的验证规则名称?例如,不要使用:

{{ $errors->first('email') }}

我想使用

{{ $errors->firstRule('email') }}

我希望我清楚这一点。我的另一个场景是 API,它当然可以验证用户输入。我想返回一个包含破坏规则的数组,而不是英语消息,这对于多语言前端来说很难适应。

最佳答案

如果您使用 FormRequest,您可以在如下方法中获取验证器实例:

$this->getValidatorInstance();

然后,如果您需要获取失败规则的名称,只需调用以下代码:

$this->getValidatorInstance()->failed();

关于php - Laravel 验证规则 - 获取损坏的规则名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42519104/

相关文章:

php - 使用从数组中提取的 ID 向用户发送电子邮件

php - 查看 Swagger API 文档

c# - MVC3 输入相关验证

javascript - 使用 AngularJS 在文本框中需要两个词

php - 设置日期标题以降低 SpamAssassin 分数

php - 不使用 PHP 重定向的 POST

php - preg_replace : wildcards do not match umlaut-characters

laravel - 有没有可能减少 laravel4 中的路由

docker 容器中的 Laravel - 可以进行迁移但不能迁移

validation - Openerp 中的电子邮件验证?