web*_*ker 2 laravel blade laravel-4
我希望在一个单独的文件中定义全局变量,然后在任何我想要的地方注入,所以对于Laravel 4 + Blade,我做到了这一点.
顶级文件example.blade.php:
@include('head')
@include('body')
Run Code Online (Sandbox Code Playgroud)
head.blade.php
$STYLE_PATH_CSS="styleFolder/foundation/css"
$STYLE_PATH_JS="styleFolder/foundation/js"
$STYLE_PATH_JS_VENDOR="styleFolder/foundation/js/vendor"
<link rel="stylesheet" href=" <?php echo $STYLE_PATH_CSS ?>/normalize.css ">
<link rel="stylesheet" href=" <?php echo $STYLE_PATH_CSS ?>/foundation.css ">
<link rel="stylesheet" href=" <?php echo $STYLE_PATH_JS_VENDOR ?>/modernizr.js ">
Run Code Online (Sandbox Code Playgroud)
body.blade.php
<script src="styleFolder/foundation/js/vendor/jquery.js"></script>
<script src="styleFolder/foundation/js/foundation.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
在那之前,它工作正常.然后我希望再简化一次:用全局变量替换重复路径.所以,
variables_G.blade.php
<?php $STYLE_PATH_CSS="styleFolder/foundation/css" ?>
<?php $STYLE_PATH_JS="styleFolder/foundation/js" ?>
<?php $STYLE_PATH_JS_VENDOR="styleFolder/foundation/js/vendor" ?>
Run Code Online (Sandbox Code Playgroud)
和新的head.blade.php
@include('variables_G.blade.php')
<link rel="stylesheet" href=" <?php echo $STYLE_PATH_CSS ?>/normalize.css ">
<link rel="stylesheet" href=" <?php echo $STYLE_PATH_CSS ?>/foundation.css ">
<link rel="stylesheet" href=" <?php echo $STYLE_PATH_JS_VENDOR ?>/modernizr.js ">
Run Code Online (Sandbox Code Playgroud)
那么它找不到变量的价值.错误信息:
Undefined variable: STYLE_PATH_CSS.
Run Code Online (Sandbox Code Playgroud)
谁能帮我吗?
视图应该是愚蠢的,这也意味着你不应该在一个内部创建变量给另一个,你不应该给视图太多的责任.
为Blade Views提供全局变量并确保它们随时可用的最佳方法是使用View::share():
View::share('STYLE_PATH_CSS', 'styleFolder/foundation/css');
View::share('STYLE_PATH_JS', 'styleFolder/foundation/js');
View::share('STYLE_PATH_JS_VENDOR', 'styleFolder/foundation/js/vendor');
Run Code Online (Sandbox Code Playgroud)
您可以将其添加到composers.php文件中并将其加载到app/start/global.php:
require app_path().'/composers.php';
Run Code Online (Sandbox Code Playgroud)
看看文档:http://laravel.com/docs/responses#views
View::share(); 是制作全局变量的最佳方法.
View::share('name', 'Steve');
Run Code Online (Sandbox Code Playgroud)
为了确保每次呈现某个视图时都包含某个变量,我喜欢View Composers
您可以在呈现某些视图时包含内容.我想你可以在主布局上使用它,使事情几乎全局化.它提供了更多的控制,如果你需要广泛使用的东西,这将是好的,但如果它是敏感的,你不想在任何地方.
View::composer('profile', function($view)
{
$view->with('count', User::count());
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11926 次 |
| 最近记录: |