Laravel中如何将Controller传递的变量在Blade模板表格中展示
Blade模板渲染JSON格式号码数据实现方案
你当前控制器传入视图的$numbers为json_encode处理后的JSON字符串,在模板中先将其解码为PHP数组,再做遍历渲染即可生成表格,具体实现如下:
模板代码参考(对应文件resources/views/show/numbers.blade.php)
@php // 将JSON字符串转为关联数组,第二个参数true固定传,确保返回数组而非对象 $numberList = json_decode($numbers, true); @endphp <table style="width: 100%;border-collapse: collapse;"> <thead> <tr> <!-- 表头可根据接口实际返回的字段调整,以下为通用示例 --> <th style="border: 1px solid #ccc;padding: 8px;text-align: left;">序号</th> <th style="border: 1px solid #ccc;padding: 8px;text-align: left;">号码</th> </tr> </thead> <tbody> {{-- 做数据合法性判断,避免空数据报错 --}} @if(is_array($numberList) && count($numberList) > 0) @foreach($numberList as $index => $item) <tr> <td style="border: 1px solid #ccc;padding: 8px;">{{ $index + 1 }}</td> <td style="border: 1px solid #ccc;padding: 8px;"> {{-- 兼容一维数组、二维数组两种返回结构,按需调整字段名 --}} {{ is_array($item) ? ($item['number'] ?? $item['mobile'] ?? '-') : $item }} </td> </tr> @endforeach @else <tr> <td colspan="2" style="border: 1px solid #ccc;padding: 8px;text-align: center;color: #999;">暂无号码数据</td> </tr> @endif </tbody> </table>
可选优化项
- 建议去掉控制器中多余的
json_encode转换,直接把数组传给视图,减少模板层解码开销,控制器调整后代码:
$response = (new ApiController)->checkNumbers(); $numbers = []; if(!empty($response['status']) && $response['status'] == 'SUCCESS') { $numbers = $response['numbers']; } return [ 'html' => view('show.numbers', compact('numbers'))->render() ];
调整后模板可删除json_decode相关代码,直接遍历$numbers变量即可。
- 表格样式可替换为项目现有UI框架的类名(如Bootstrap的
table类、Tailwind工具类),和全站风格保持统一。 - 若接口返回的
numbers包含更多字段(如归属地、状态、创建时间),直接在表头和<td>中对应增加列、取对应键值即可。
内容的提问来源于stack exchange,提问作者Kinjal Rathod
相关产品推荐
相关产品推荐

