Laravel8中Blade接收的控制器查询结果如何回传给其他控制器
问题1:更优雅的一次性提交实现方式
方案1(最推荐):复用查询逻辑
你可以在上层控制器生成$necps时,把对应的查询参数或者整个$necps集合存入当前用户的session,目标控制器直接从session读取即可,既不需要写大量隐藏域,也能避免前端传递数据被篡改的风险,性能和安全性都最优。
方案2:单隐藏域传递序列化结果
不需要循环生成多个输入框,直接把整个集合转为JSON字符串存在单个隐藏域提交:
<input type="hidden" name="parts" value="{{ $necps->toJson() }}">
目标控制器接收后反序列化即可得到完整数据:
$parts = json_decode($request->input('parts'), true);
问题2:通过foreach循环传递完整数组(无JS)
只需要给数组键名加上索引标识,避免键名重复覆盖即可,Blade循环自带$loop变量可以直接作为索引使用,修改你的循环代码如下:
@foreach($necps as $necp) <input value="{{$necp->id_part}}" name="parts[{{$loop->index}}][id]" type="hidden"> <input value="{{$necp->latitude}}" name="parts[{{$loop->index}}][latitude]" type="hidden"> <input value="{{$necp->longitude}}" name="parts[{{$loop->index}}][longitude]" type="hidden"> <input value="{{$necp->nome_part}}" name="parts[{{$loop->index}}][nome_part]" type="hidden"> <input value="{{$necp->endereco}}" name="parts[{{$loop->index}}][endereco]" type="hidden"> @endforeach
提交后你在目标控制器调用$request->input('parts')就能拿到完整的二维数组,每条数据对应循环中的$necp记录。
内容的提问来源于stack exchange,提问作者Luiz Santa
相关产品推荐
相关产品推荐

