Php 如何在刀片模板中通过引用@include传递变量?

Php 如何在刀片模板中通过引用@include传递变量?,php,laravel-4,blade,Php,Laravel 4,Blade,在Laravel 4.2设置中,我在模板中有一个变量,我希望在多个包含中共享该变量: 主刀 <?php $tabindex = 0; ?>{{--This is the variable--}} @include('header'){{-- <-in header.blade, I often use ++$tabindex --}} {{--$tabindex is still 0--}} @include('content'){{-- <-in content.bla

在Laravel 4.2设置中,我在模板中有一个变量,我希望在多个包含中共享该变量:

主刀

<?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--}}
{{--这是变量--}

@include('header'){{--我从你说的话中了解到,你一直在做这样的事情

View::share('some_variable',$some_variable);
也许在模板中初始化变量。不鼓励这种做法,但还有另一种方法可以做到,那就是在php文件中初始化变量,并通过将这一行添加到文件中来共享它

$some_variable = 0;  //Initialize it any way you need to.
View::share('some_variable', $some_variable);
然后在app/start/global.php中添加这一行

require app_path().'/composers.php';
使用

@include('view', array('key'=>'value')) 

这是最好的方法。

Laravel blade include似乎为您添加的每个包含的模板创建了一个可变范围

View:share('name', $value)
与您想要的不同,它旨在向呈现的每个模板注入一些任意变量,在引导或控制器入口点中定义资产路径非常有用

要解决您的问题,只需告诉包含范围内的php通过
global
查找上面的变量,因此
main.blade.php

<?php $tabIndex = 0 ?>
@include('subform');

注意,如果不在主模板中定义变量,这可能不起作用,我只在主模板(我在控制器中渲染到的模板)中尝试过这一点它成功了。

我完全按照您对上述简单示例的建议进行了尝试,但问题仍然存在-我在一个文件中声明了变量,然后立即执行View::share。然后,我将该文件的要求添加到全局开始,并删除了布局中的所有直接赋值,这样唯一的赋值将是预增量在包含的刀片服务器中执行此操作。tabindex在每个包含开始时仍返回其初始值。我在这里的过程中是否遗漏了什么?正如我在问题中所说的“将值作为数组传递给@include显然是按值传递,并产生了相同的效果。”虽然我以前尝试过它时认为它可能太有用了,但今天尝试它时它仍然是按值传递的(从它的调用方式来看,这可能是显而易见的)。这个答案非常简短-可能您的解决方案中有一些关键的细节您忽略了分享,以便通过引用进行传递?这对我很有用,但前提是我在主模板中添加以下代码:
<?php 
    global $tabindex;
    $tabindex++;
?>