Laravel中Blade视图间传值报错求助:从order到receipt传变量失败
问题解决步骤
1. 修复order.blade.php的session调用错误
报错的直接原因是你在order视图中错误使用了$session['var']变量,Blade模板中不存在全局的$session变量,必须用Laravel提供的session()辅助函数获取session数据。
将order.blade.php中的代码:
<div class="modal-body"> @include('orders.receipt', ['data' => $session['var']]) </div>
修改为:
<div class="modal-body"> @include('orders.receipt', ['data' => session('var')]) </div>
2. 优化receipt.blade.php的变量使用
既然已经通过@include把data变量传递到receipt视图,直接使用传过来的$data比再次读取session更合理,也更符合视图传参逻辑:
将receipt.blade.php中的代码:
<td class="tableitem"><p class="itemtext">{{ session('var.1') }}</p></td>
修改为:
<td class="tableitem"><p class="itemtext">{{ $data['1'] }}</p></td>
若要访问第二个变量,对应写成{{ $data['2'] }}即可。
额外说明
控制器中Redirect::back()->with(...)的用法是正确的,它会将数据存入闪存session,这类数据会在下次请求后自动销毁。如果后续不需要视图间传参,也可以直接在receipt视图中保留session('var.1')的写法,此时order视图的@include无需传递data参数。
内容的提问来源于stack exchange,提问作者Raff
相关产品推荐
相关产品推荐

