Laravel视图正确展示数组问题:PaymentController传值后渲染异常
嘿,我看到你的问题了,先给你揪出一个最明显的小错误——你的控制器里有个变量拼写失误!
第一步:修正控制器的拼写错误
看这段代码:
return view('posts.registration')->with('selectedTypes', $selectedTtypes);
你把$selectedTypes写成了$selectedTtypes(多了一个t),这会直接导致视图接收不到这个变量,这大概率是你现在无法正常展示内容的核心原因。修正后的控制器代码应该是:
class PaymentController extends Controller { public function storeQuantity(Request $request){ $selectedTypes = $request->type; // 这里修正了变量名的拼写错误 return view('posts.registration')->with('selectedTypes', $selectedTypes); } }
第二步:根据票种数据结构编写视图代码
接下来要看前端传给你的$request->type是什么结构,我给你两种常见情况的解决方案:
情况1:票种名称为键,数量为值(比如['vip' => 2, 'standard' => 3])
如果是这种结构,你的registration.blade.php可以这么写:
<div class="card_body"> {{-- 先判断是否有选中的票种 --}} @if($selectedTypes && count($selectedTypes) > 0) <h3>已选票种明细</h3> <ul class="ticket-list"> @foreach($selectedTypes as $ticketName => $quantity) <li> <strong>{{ $ticketName }}</strong>: {{ $quantity }} 张 </li> @endforeach </ul> @else <p>暂未选择任何票种</p> @endif </div>
情况2:票种是包含名称和数量的数组/对象(比如[['name' => 'vip', 'quantity' => 2], ...])
如果前端传的是这种结构,视图代码要调整成这样:
<div class="card_body"> @if($selectedTypes && count($selectedTypes) > 0) <h3>已选票种明细</h3> <ul class="ticket-list"> @foreach($selectedTypes as $ticket) <li> <strong>{{ $ticket['name'] }}</strong>: {{ $ticket['quantity'] }} 张 </li> @endforeach </ul> @else <p>暂未选择任何票种</p> @endif </div>
额外调试技巧
如果你不确定$selectedTypes的具体结构,可以在控制器里加一行dd($selectedTypes);,请求后就能看到数据的具体格式,方便你调整视图代码。另外也可以在视图里先写{{ dd($selectedTypes) }},确认变量是否成功传递到视图中。
内容的提问来源于stack exchange,提问作者johnW
相关产品推荐
相关产品推荐

