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

Laravel验证:能否对不同属性名应用相同验证规则?

Laravel多字段同规则验证的正确方式

不行,Laravel的验证规则不支持用|分隔多个字段来共享同一套规则——你写的'key|moduleKey'会被系统识别为单个字段名(字段名叫key|moduleKey),根本不会去匹配key或moduleKey这两个实际请求字段。

给你两种实用的解决办法:

1. 字段分开定义,复用规则

如果要求两个字段都必须存在且符合相同规则,直接分别声明字段,把规则抽成变量避免重复代码:

// 定义通用规则
$commonRules = ['required', 'numeric'];

$data = $request->validate([
    'key' => $commonRules,
    'moduleKey' => $commonRules,
]);

2. 二选一必填场景(更贴合权限校验需求)

如果你的实际需求是请求里只要有key或moduleKey其中一个即可(权限校验常遇到这种情况),用required_without规则实现二选一验证:

$data = $request->validate([
    'key' => ['required_without:moduleKey', 'numeric'],
    'moduleKey' => ['required_without:key', 'numeric'],
]);

这样只要请求包含key或moduleKey中的任意一个,且该字段是数字格式,就能通过校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:45:34