如何通过Blade模板向Laravel后端传递数组数据?
无需字符串化传递数组至Laravel后端的实现方案
当然可以,不用字符串化直接传递数组给Laravel后端有几种实用方案,根据你的前端场景选择即可:
1. HTML表单提交场景
直接给表单元素的name属性按数组格式命名,Laravel会自动将其解析为多维数组,完全符合你期望的格式。示例代码:
<form method="POST" action="/members"> @csrf <!-- 第一条成员数据 --> <input type="text" name="members[0][name]" value="Sam"> <input type="text" name="members[0][location]" value="US"> <!-- 第二条成员数据 --> <input type="text" name="members[1][name]" value="Mike"> <input type="text" name="members[1][location]" value="UK"> <button type="submit">提交</button> </form>
后端控制器中直接获取即可:
public function store(Request $request) { $members = $request->input('members'); // $members 结构就是你要的: // [ // ["name" => "Sam", "location" => "US"], // ["name" => "Mike", "location" => "UK"] // ] }
如果是动态添加表单字段,也可以用members[][name]这种省略索引的命名方式,Laravel会自动按提交顺序组装成数组。
2. AJAX/API请求场景
用JS(原生JS、Axios、jQuery等)发送请求时,直接传递JS原生数组即可,无需转JSON字符串,只要请求头设置正确(多数JS库默认会处理)。示例用Axios:
const members = [ { name: "Sam", location: "US" }, { name: "Mike", location: "UK" } ]; axios.post('/members', { members: members }) .then(res => { // 处理响应逻辑 });
后端同样通过$request->input('members')拿到目标数组,结构与你期望的完全一致。
关键注意点
- 表单提交默认的
application/x-www-form-urlencoded、AJAX常用的application/json请求头,Laravel都能自动解析数组结构,无需额外配置。 - 若后端需要验证数组格式,可在请求验证规则里用
array和*通配符,比如'members.*.name' => 'required|string'。
内容的提问来源于stack exchange,提问作者Mani
相关产品推荐
相关产品推荐

