Laravel 5.6中@foreach循环结合JQuery的技术实现问询
Laravel 5.6 视图订单循环处理的优化建议
嘿,我看了你在Laravel 5.6项目里的代码,发现几个可以优化和避免踩坑的点,帮你梳理一下:
首先,先把你贴的视图代码放出来方便参考:
@foreach($orders as $order)
{{ \Carbon\Carbon::parse($order->created_at)->format('m/d/Y') }} {{ $order->order_number }} @endforeach
1. 修复HTML结构问题
你把<tbody>放在了@foreach循环里面,这会导致每一条订单都生成一个独立的<tbody>,不符合HTML规范——正常应该是一个<tbody>包裹所有订单行。调整后的代码如下:
<tbody> @foreach($orders as $order) <tr> <td>{{ \Carbon\Carbon::parse($order->created_at)->format('m/d/Y') }}</td> <td>{{ $order->order_number }}</td> <td><input type="checkbox" data-toggle="switch" class="ct-primary" id="printing-{{ $order->id }}" value="{{ $order->id }}"></td> </tr> @endforeach </tbody>
2. 解决重复ID的问题
循环里的checkbox用了固定的id="printing",这会让页面出现多个相同ID的元素(HTML要求ID必须唯一),后续用JS操作很容易出问题。你可以把ID改成和订单关联的动态值,比如id="printing-{{ $order->id }}",确保每个checkbox的ID都是独一无二的。
3. 简化Carbon日期处理
如果你的Order模型是Laravel默认的Eloquent模型,created_at字段会被自动处理为Carbon实例,完全不用手动调用Carbon::parse(),直接调用format()方法就行:
<td>{{ $order->created_at->format('m/d/Y') }}</td>
要是你的模型没自动处理日期字段,记得在Order模型里加上这行代码:
protected $dates = ['created_at', 'updated_at'];
4. 增加空数据友好提示
万一API返回的订单数据是空的,页面会显示空表格,体验很差。可以在循环前加个判断,给用户友好提示:
<tbody> @if($orders->isEmpty()) <tr> <td colspan="3" class="text-center">暂无订单数据</td> </tr> @else @foreach($orders as $order) <tr> <td>{{ $order->created_at->format('m/d/Y') }}</td> <td>{{ $order->order_number }}</td> <td><input type="checkbox" data-toggle="switch" class="ct-primary" id="printing-{{ $order->id }}" value="{{ $order->id }}"></td> </tr> @endforeach @endif </tbody>
这样调整后,代码不仅更规范,还能避免很多潜在问题~
内容的提问来源于stack exchange,提问作者FabricioG
相关产品推荐
相关产品推荐

