laravel后端收不到前端数组,主因是content-type与name属性/数据结构不匹配:表单需name加[]、json请求须设application/json头并用request()->json()取值。

前端传数组,Laravel 后端收不到,绝大多数情况不是“没传”,而是传的方式和后端期待的解析方式不匹配。核心问题就一个:Content-Type 和 name 属性/数据结构没对上。
POST 表单提交时 name 没加 [] 导致 Laravel 当成单值处理
如果你用的是 <form method="POST"></form> 提交(比如上传多图、选多个 checkbox),Laravel 默认把同名字段当单个字符串处理,除非你明确告诉它这是数组。
- 错误写法:
<input type="checkbox" name="category" value="1">—— 即使勾了多个,request()->category只拿到最后一个值 - 正确写法:
<input type="checkbox" name="category[]" value="1">—— 这样request()->category才是数组 - 文件上传同理:
<input type="file" name="images[]" multiple>,缺[]就只能收到一个UploadedFile对象
fetch / axios 发 JSON 数据但没设 Content-Type 或没 JSON.stringify
前端用 fetch 或 axios 发数组,后端收不到,90% 是因为请求头或数据格式不对。
PigX UI Pro 前端开发指南 - Vue 3 + TypeScript + Element Plus。当用户提到 PigX UI、PigX 前端、lgb-mgui 项目、Vue 3 企业级后台开发、Element Plus 后台开发时使用此技能。
- 必须设置
headers: {'Content-Type': 'application/json'},否则 Laravel 会走$_POST解析逻辑,而 JSON 数据根本不在那里 - body 必须是字符串:
body: JSON.stringify({ tags: ['php', 'laravel'] }),不能直接传对象 - 后端要用
request()->json('tags')或request()->get('tags')(Laravel 9+ 支持自动从 JSON body 提取)来取,不能用request()->tags—— 后者只读表单编码(application/x-www-form-urlencoded)
后端用了 request()->all() 但没过滤空值或类型错乱
request()->all() 看似万能,但对数组场景容易埋坑:
- 如果前端传了
categories: [1, null, 3],PHP 接收后可能变成[1, '', 3](尤其在表单提交中),null被转为空字符串,导致array_filter()失效 - 如果字段名含点号(如
user.profile.name),request()->all()会展开成嵌套数组,但request('user.profile.name')会返回null—— 此时得用request()->collect('user')->get('profile.name')或手动递归取 - 验证规则里写
'categories.*' => 'required|integer'才能逐项校验,只写'categories' => 'array'不够
中间件或 CSRF 验证意外截断了原始输入
Laravel 的 TrimStrings 或 ConvertEmptyStringsToNull 中间件会影响数组内容:
-
ConvertEmptyStringsToNull会把['a', '']变成['a', null],后续用array_values()或filter()时行为可能出人意料 - CSRF 验证失败时,整个请求会被终止,
request()返回空数组 —— 检查响应状态码是不是 419,再确认前端是否带了有效的X-CSRF-TOKEN - 如果用了自定义中间件做了
file_get_contents('php://input')读取一次,后续再调request()->json()就会返回空,因为 PHP 的输入流只能读一次
最常被忽略的一点:数组是否真的“传到了 Laravel”?先在控制器开头加一行 Log::debug(request()->all());,再对比 Network 面板里的 Payload,看差异出现在哪一层 —— 是前端没发对,还是中间件改了,还是 Laravel 解析逻辑没匹配上。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!








