场景
我正在 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/