Laravel 4 Blade @include 变量
Posted
技术标签:
【中文标题】Laravel 4 Blade @include 变量【英文标题】:Laravel 4 Blade @include variable 【发布时间】: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 文件。 【参考方案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
解决方案 2 与 Laravel 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
将仅在包含调用的本地范围内可用。
为什么不直接从控制器发送变量?
【讨论】:
以上是关于Laravel 4 Blade @include 变量的主要内容,如果未能解决你的问题,请参考以下文章
Laravel - Blade:@include 一个带有自动“文件名注释”的模板
@include Laravel Blade 模板以使用 Javascript 追加