You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中自定义taxonomies数组验证消息格式的实现方案

Laravel自定义嵌套数组验证错误消息

你的需求是将taxonomies.*.values.*字段的required验证错误消息,从默认的The taxonomies.0.values.key1 field is required.修改为The key1 value is required at array 0,可以通过以下方式实现:

实现步骤

在你的表单请求类(继承自FormRequest的类)中,新增messages()方法,利用闭包动态解析属性路径并生成自定义错误消息:

public function rules()
{
    return [
        'title' => 'required|string',
        'taxonomies' => 'required|array',
        'taxonomies.*.id' => 'required|string|exists:taxonomies,id', 
        'taxonomies.*.values' => 'required|array|min:2',
        'taxonomies.*.values.*' => 'required',
        'currency' => 'required|string',
        'client_budget' => 'required|numeric',
    ];
}

public function messages()
{
    return [
        'taxonomies.*.values.*.required' => function ($attribute, $value, $parameters) {
            // 拆分属性的点分隔路径,比如将"taxonomies.0.values.key1"拆分为数组
            $attributeParts = explode('.', $attribute);
            // 提取taxonomies数组的索引
            $taxonomyIndex = $attributeParts[1];
            // 提取values数组的键名
            $valueKey = $attributeParts[3];
            
            return "The {$valueKey} value is required at array {$taxonomyIndex}";
        }
    ];
}

核心逻辑

  • 闭包接收的$attribute参数是验证失败的完整属性路径,通过explode('.', $attribute)拆分后,能精准提取出taxonomies数组的索引和values的键名
  • 按需求格式拼接字符串,即可生成自定义的错误消息

如果是在控制器中直接使用Validator门面,同样可以在消息配置中用闭包实现:

$validator = Validator::make($request->all(), [
    // 你的验证规则
], [
    'taxonomies.*.values.*.required' => function ($attribute, $value, $parameters) {
        $attributeParts = explode('.', $attribute);
        $taxonomyIndex = $attributeParts[1];
        $valueKey = $attributeParts[3];
        return "The {$valueKey} value is required at array {$taxonomyIndex}";
    }
]);

内容的提问来源于stack exchange,提问作者Fidelis E Peter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 22:40:30