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

Laravel FormRequest验证中如何让in规则错误提示显示预定义合法选项

Laravel FormRequest in验证规则显示合法可选值实现方案

Laravel的in验证规则内置了:values占位符,只要自定义对应规则的错误提示,调用该占位符即可自动展示所有预定义的合法值,无需手动重复维护选项列表。

方法一:单表单自定义提示(FormRequest内实现)

在对应FormRequest类中重写messages()方法,为目标字段的in规则指定提示文本,引入:values占位符:

// 定义验证规则
public function rules()
{
    return [
        'rule' => 'required|in:Option1,Option2,Option3',
    ];
}

// 自定义错误提示
public function messages()
{
    return [
        'rule.in' => '所选:attribute无效,合法可选值为::values',
    ];
}

验证失败时,提示会自动渲染为类似:所选rule无效,合法可选值为:Option1, Option2, Option3

如果需要全局生效,直接修改项目语言包下的validation.php配置文件,修改in规则对应的默认提示即可,所有使用in规则的字段都会自动带出合法值:

// 以中文语言包为例,文件路径:lang/zh_CN/validation.php
'in' => '所选 :attribute 无效,允许的取值为::values。',

方法二:数组形式定义规则(适合选项复用/多值场景)

如果可选值较多、需要在多处复用,可使用Rule门面的in()方法传入允许值数组,规则维护更方便,:values占位符依然可以正常识别数组内容:

use Illuminate\Validation\Rule;

public function rules()
{
    // 统一维护允许的选项列表
    $allowedValues = ['Option1', 'Option2', 'Option3'];
    
    return [
        'rule' => [
            'required',
            Rule::in($allowedValues)
        ],
    ];
}

后续调整可选值只需要修改$allowedValues数组即可,规则、错误提示会自动同步,不需要多处修改。

其他说明

  • 你当前看到的错误提示"The rule type is invalid."是默认提示The selected :attribute is invalid.替换字段名(你的字段名是rule)后的正常渲染结果,不是验证规则本身失效。
  • 如果使用PHP 8.1+的枚举类型做验证,可通过Rule::enum()绑定枚举类,自定义提示时可通过闭包动态获取枚举的所有取值拼接展示。

内容的提问来源于stack exchange,提问作者mw.7225

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:31:04