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

rru*_*r81 1 php undefined laravel blade laravel-4

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

return View::make('views_x.some_view')->with('client_to_show', $client_to_show);
Run Code Online (Sandbox Code Playgroud)

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

//layout.master.blade.php on top
<?php 
  $str_sel_names        = 'one_value';
?>
<!-- starts template -->
<!DOCTYPE html>
<html lang="en">
Run Code Online (Sandbox Code Playgroud)

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

@extends('layouts.master')

@section('content')
...
{{$str_sel_names}}
Run Code Online (Sandbox Code Playgroud)

@extends('layouts.master')

return View::make('views_x.some_view')->with('client_to_show', $client_to_show);
Run Code Online (Sandbox Code Playgroud)

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

想法?更好的方法来做到这一点?

Ant*_*iro 7

您可以使用View Composers:

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

你可以把它放在你的路线文件,过滤器文件或者像我这样,app/composers.php通过添加来创建和加载

require app_path().'/composers.php';
Run Code Online (Sandbox Code Playgroud)

到你的app/start/global.php文件.

查看共享是另一种选择:

View::share('client_to_show', $client_to_show);
Run Code Online (Sandbox Code Playgroud)