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

Posted

技术标签:

【中文标题】在 Laravel 中验证数组时,如何使用数组项规则添加验证自定义消息?【英文标题】:How to add validation custom messages with array items rules when validating array in Laravel? 【发布时间】:2019-03-27 11:04:53 【问题描述】:

我有自定义验证码:

$this->validate($request, [
    'array' => 'required|array|max:100',
    'array.*' => 'required|string|distinct|min:3'
], [
    'array.max' => 'Array can't have more :max items',
]);

这里如何添加带有数组项规则的自定义消息?

例如:'array.item.min' => 'Array items length can't be greater :min charackters'

数组项的示例 laravel 默认验证错误消息:


  message: "The given data was invalid."


errors: 
  array.3: ["The array.3 must be at least 3 characters."]


array.3: ["The array.3 must be at least 3 characters."]

0: "The array.3 must be at least 3 characters."
message: "The given data was invalid."

如何用我的数组项的单个消息替换此验证消息?

【问题讨论】:

你能提供更多代码让我更好地理解 我不确定,你能试试array.*.min吗? @aceraven777,它不工作。 【参考方案1】:

您可以尝试在提交表单时在每个元素上添加自定义消息。这是示例代码

$customMessages['array.max'] = 'Array can't have more :max items';

foreach ($request->get('array') as $key => $value) 
    $customMessages['array.' . $key . '.min'] = 'Array items length can't be greater :min charackters';


$this->validate($request, [
    'array' => 'required|array|max:100',
    'array.*' => 'required|string|distinct|min:3'
], $customMessages);

如果您想在视图中显示错误,可以这样做:

@if ($errors->has('array.0'))
     $errors->first('array.0') 
@endif

如果视图中有 foreach

@if ($errors->has('array.'.$index))
     $errors->first('array.'.$index) 
@endif

【讨论】:

如何以您的意思显示然后生成的错误消息? @aceraven777 例如,我将返回错误消息并将其与 javascript 一起使用。 js 中生成的示例消息:skills.2: Array(1)。这里数组名称是skills.2。 2 项数组出错。你能说说你对显示错误消息的意思吗?

以上是关于在 Laravel 中验证数组时,如何使用数组项规则添加验证自定义消息?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 验证中要求数组并防止获得意外的键

如何在 Laravel 中验证数组?

如何在 Vue.js 中显示错误数组?使用 Laravel 进行后端验证

如何验证 laravel 中的复选框数组?

验证数组中的 Laravel 嵌套规则

如何使用 proengsoft/laravel-jsvalidation 和 Laravel 5 验证数组输入