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

Laravel闭包验证中获取数组长度报错问题求助

问题解决

错误原因很明确:$fail() 方法必须接收字符串类型的错误提示信息,你直接将数组长度的数值(或当attachment字段不存在时返回的null)传入,导致Laravel的翻译组件在处理时无法生成有效的字符串,从而抛出该异常。

修正后的代码示例:

'attachment' => 'max:10',
'attachment.*' => 'max:10240|mimes:jpeg,jpg,pdf',

'deletedAttachments' => ['nullable', 'array', 'max:10', function($attribute, $value, $fail) {
    // 安全获取attachment数组长度,字段不存在时返回空数组
    $attachmentCount = count($this->input('attachment', []));
    
    // 根据实际校验需求编写逻辑,比如判断附件总数是否超限
    if ($attachmentCount + count($value) > 10) {
        $fail('附件总数不能超过10个');
    }

    // 如果仅需输出当前附件长度作为提示,也要转为字符串
    // $fail('当前已上传附件数量为:' . $attachmentCount);
}],

关键注意点:

  • 必须给$fail()传入明确的字符串错误提示,禁止直接传入数字或非字符串类型的值
  • 用$this->input('attachment', [])替代$this->input('attachment'),确保字段不存在时仍能拿到空数组,避免潜在的取值问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 10:40:56