将一些变量放入Laravel-> Blade的最佳方法

时间:2014-04-04 18:45:50

标签: php laravel laravel-4 undefined blade

我是Laravel的新手,例如,我希望默认情况下在所有视图中都有一个变量,有没有比每次传递该变量更好的方法

return View::make('views_x.some_view')->with('client_to_show', $client_to_show);

?或者比在Session中存储它们然后在视图中访问它们更好? 我尝试将变量放在布局主文件中:

//layout.master.blade.php on top
<?php 
  $str_sel_names        = 'one_value';
?>
<!-- starts template -->
<!DOCTYPE html>
<html lang="en">

但是这个只能在模板布局中访问..而不是子视图......

@extends('layouts.master')

@section('content')
...
{{$str_sel_names}}

@section('content') ... {{$str_sel_names}}

我得到:[ErrorException 未定义的变量:str_sel_names(查看:C:\ Work \ lara_street \ laravel \ app \ views \ core \ dashboard.blade.php)]

想法?更好的方法吗?

1 个答案:

答案 0 :(得分:7)

您可以使用View Composers:

View::composer(['store.index', 'products.*'], function($view)
{
    $view->with('client_to_show', $client_to_show);
});

你可以把它放在你的路线文件,过滤器文件中,或者像我一样,创建app/composers.php并加载

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

app/start/global.php文件。

查看分享是另一种选择:

View::share('client_to_show', $client_to_show);