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

Laravel Validation实现条件验证时报validateOptions不存在如何解决

报错原因

Laravel 内置验证规则中不存在options规则,你想实现的「字段取值限定在指定列表」的需求,应该使用内置的in规则。

修正后的验证规则

直接把account_type规则里的options替换为in即可,其余required_if逻辑不需要改动:

'account_type' => 'required|in:PERSONAL,ORGANIZATIONAL',
'per_client_name' => 'required_if:account_type,PERSONAL|string',
'per_street' => 'required_if:account_type,PERSONAL',
'per_address' => 'required_if:account_type,PERSONAL',
'org_name' => 'required_if:account_type,ORGANIZATIONAL',
'org_type' => 'required_if:account_type,ORGANIZATIONAL',
'org_cont_name' => 'required_if:account_type,ORGANIZATIONAL'

补充说明

  • 如果你的account_type实际允许的取值是首字母大写的Personal、Organizational,需要对应调整in规则里的枚举值,大小写要和前端传入的实际值完全匹配才能通过校验。
  • 如果你使用的是 Laravel 8.39 及以上版本,也可以先定义AccountType枚举类,再用Enum规则实现校验,可读性更高,可选方案示例如下:
// 首先定义枚举类 app/Enums/AccountType.php
enum AccountType: string
{
    case PERSONAL = 'PERSONAL';
    case ORGANIZATIONAL = 'ORGANIZATIONAL';
}

// 验证规则对应修改为
'account_type' => ['required', new Enum(AccountType::class)],

内容的提问来源于stack exchange,提问作者Roshan Twanabasu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:24:01