【问题标题】:Laravel 4 Blade @include variableLaravel 4 Blade @include 变量
【发布时间】:2014-02-06 13:50:43
【问题描述】:

我试图用 Laravel 刀片做include,但问题是它不能传递变量。这是我的示例代码:

file_include.blade.php

<?php
  $myvar = "some text";

main.blade.php

@include('file_include')
{{$myvar}}

当我运行文件时,它返回错误“未定义的变量:myvar”。那么,如何将变量从包含文件传递到主文件?

谢谢。

【问题讨论】:

  • @include 用于包含子视图,不应该用于以这种方式加载变量。请记住,这些是刀片模板,而不是常规的 php 文件。

标签: php laravel-4 blade


【解决方案1】:

如果你真的想改变你的变量,我建议你做一个经典的 PHP 要求(然后它会自动通过引用)

【讨论】:

    【解决方案2】:

    不幸的是,Laravel Blade 引擎不支持你所期望的!但是你可以通过一些传统的方式来实现它!

    解决方案 1 - 没有 Laravel Blade Engine

    步骤一:

    来自

    file_include.blade.php
    

    file_include.php
    

    步骤 b:

    main.blade.php

    <?php 
         include('app/views/file_include.php')
    ?>
    {{$myvar}}
    

    解决方案 2Laravel Blade Engine

    routes.php

    $data = array(
    'data1'         => "one",
    'data2'         => "two",
    );
    
    View::share('data', $data); 
    

    像这样从Any View 访问 $data 数组

    {{ $data['data1'] }}
    

    输出

    one
    

    【讨论】:

      【解决方案3】:

      我认为你必须了解 Laravel Blade 模板中的变量作用域。包含使用@include 的模板将从其父视图(定义它的视图)继承所有变量。但我猜你不能在父范围的子视图中使用你定义的变量。如果您希望您的变量对父级可用,请尝试使用View::share($variableName, $variableValue),它将按预期对所有视图可用。

      【讨论】:

        【解决方案4】:

        为什么要将它从包含传递到调用模板?如果您在调用模板中需要它,请在此处创建它,然后将其传递到包含的模板中,如下所示:

        @include('view.name', array('some'=>'data'))
        

        以上代码来自http://laravel.com/docs/templates的sn-p

        【讨论】:

        • 不幸的是,如果您需要从不同的页面获取变量,这不是解决方案!请检查我的答案,你会明白我的意思
        • 好点。我的回答并没有真正解决实际问题。相反,我提供了一个不涉及传递变量的解决方案。但是,如果需要传入一个变量,您的解决方案非常适合!
        【解决方案5】:

        Blade 是 Laravel 的模板引擎。所以尝试从控制器传递值,或者您可以在 routes.php 中定义它以进行测试。

        @include 用于包含子视图。

        【讨论】:

          【解决方案6】:

          在这种情况下,$myvar 将仅在包含调用的本地范围内可用。

          为什么不直接从控制器发送变量?

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-12-10
            • 1970-01-01
            • 2016-05-19
            • 2014-02-24
            • 2017-04-29
            • 2015-10-19
            • 2019-04-03
            相关资源
            最近更新 更多