【发布时间】:2014-10-15 18:31:37
【问题描述】:
在 Laravel 4.2 设置中,我在模板中有一个变量,我希望在多个包含之间共享:
master.blade
<?php $tabindex = 0; ?>{{--This is the variable--}}
@include('header'){{-- <-in header.blade, I often use ++$tabindex --}}
{{--$tabindex is still 0--}}
@include('content'){{-- <-in content.blade, I often use ++$tabindex --}}
{{--$tabindex is still 0--}}
@include('footer'){{-- <-in footer.blade, I often use ++$tabindex --}}
{{--$tabindex is still 0--}}
$tabindex 如果用作 tabindex html 属性显然是一个微不足道的示例,我可以使用安全值和足够大的缓冲区值来解决问题,但这并不优雅,也不能解决手头的实际问题。在regular php includes 中,我的理解是包含文件中的变量赋值会影响包含文件中的变量 - 这是预期的效果。
我试过View::share(),但它呈现出相同的症状。将值作为数组传递给@include 显然是按值传递,并且也产生了相同的效果。
似乎首先对包含范围值进行整体评估,然后再对包含范围进行评估。如果是这种情况,如果在包含范围或进一步包含的范围中有任何使用(甚至通过一些持久内存进行存储),这将使我尝试做的事情变得不那么可行,因为执行顺序会不同比代码中的顺序。
是否有一些未记录的刀片巫术来防止刀片 @include 切断自己改变其包含变量的值,或者我必须依靠直接 php include 或其他一些丑陋的替代品(Session 变量应该在调用 include 范围时保持它们的值,但这只是一种令人讨厌和脆弱的方法)?
【问题讨论】: