Laravel 数组验证消息值

Posted

技术标签:

【中文标题】Laravel 数组验证消息值【英文标题】:Laravel Array Validation Message Value 【发布时间】:2016-03-14 17:30:01 【问题描述】:

对于数组验证消息,有没有办法显示值而不是属性?这样做不使用自定义验证器。

例子:

$messages = [
   ‘*' => ':value is invalid.’
]

这会输出类似“email@address is invalid”的信息。

感谢您的帮助!

【问题讨论】:

Get access to value that failed validation, in a replacer?的可能重复 如果没有其他可用的,我可能不得不走自定义验证器路线。希望有一些简单的东西,比如 :value 可以在消息中使用。 【参考方案1】:

如果有人还在寻找最新的 Laravel 版本,答案是在消息输出中使用 :input 参数:

'between' => 'The :attribute value :input is not between :min - :max.'

文档:https://laravel.com/docs/5.7/validation#custom-error-messages

【讨论】:

【参考方案2】:

要访问数组验证的索引,我只需遍历要验证的元素,而不是使用 * 通配符。

public function messages()

    $messages = [];
    foreach($this->emails as $key => $email) 
        $messages[$key] = $email . ' is an invalid email address.';
    

    return $messages;

希望这对遇到同样问题的人有所帮助。

【讨论】:

【参考方案3】:

对于完全自定义的字符串,您可以将自定义消息作为第三个参数传递给Validator::make() 方法。如果您只需要通用描述符,您可以使用一些内置的占位符,例如 :attribute:size:values

例如:

$messages = ['required' => 'The :attribute field is required.'];

$validator = Validator::make($input, $rules, $messages);

:attribute 将替换为正在验证的字段的实际名称。

更多信息可以在here找到。

【讨论】:

感谢您的回复。是的,我看到这是可以做到的,但我想知道是否有一个 :value 而不是 o :attribute。属性是我寻找价值的关键。 查看文档,我没有看到为该值定义的占位符,但我认为这是因为它在通常定义 $messages 的类中可用。例如:['required' => 'The value ' . $this->email . ' cannot be empty.']; 我正在做数组验证,所以我可以使用$this->emails 访问数组,但我不知道哪个索引失败。您如何在消息中获得正确的价值。 $messages = [‘*' => $this->emails[$indexHere] . 'is invalid.’] 想出了解决办法并发布了答案。

以上是关于Laravel 数组验证消息值的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 中验证数组时,如何使用数组项规则添加验证自定义消息?

如何自定义 laravel 数组验证错误键和消息

如何验证嵌套数组并在 laravel 中显示消息

Laravel 验证 - 如何检查给定数组中是不是存在值?

Laravel 验证检查数组大小的最小值和最大值

如果值存在于另一个字段数组中,Laravel 验证规则