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

Laravel验证:如何校验输入值为指定数组内的可选值

Laravel 机构名称请求参数校验问题分析

初始代码存在的问题

初始代码完全无法实现预期效果,核心问题有3个:

  • 验证规则用错:array规则的作用是校验提交的agency-name参数本身为数组类型,而你的需求是校验参数值属于指定的可选范围,应该用in规则而非array规则
  • 字符串拼接错误:直接将多维数组类型的$agency_names拼接到验证规则字符串中,PHP会将数组自动转为Array字符串,最终得到的验证规则完全无效
  • 数据结构理解错误:从Session中取出的config.agency-names数据,实际机构列表嵌套在Agencies二级键下,直接遍历外层变量根本拿不到正确的机构名称列表

第一次调整的遗留问题

第一次调整已经改用了正确的Rule::in规则,但仍然没有解决数据结构读取的问题:
你直接将外层的$agencies传入array_map遍历,还尝试以对象属性的方式读取AgencyName,但实际你的机构数据是数组结构,且嵌套在$agencies['Agencies']下,因此还是取不到正确的机构名称数组,校验规则依然失效。

最终代码的正确性说明

最终实现的代码做了两处核心修正:

  1. 正确读取了$agencies['Agencies']下的机构列表,循环取出每个元素的AgencyName字段,拼成了一维的机构名称数组
  2. 结合业务需求调整了必填规则为required_if:referral,no,仅当referral参数值为no时才要求必须传入agency-name,同时通过Rule::in校验传入值在合法范围内,完全符合预期要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:15:05