2014-04-04 56 views
1

的最佳方法我是Laravel的新手,例如,如果我想在默认情况下在所有视图中都有一个变量,是否有更好的方式比传递每次变化w/把一些变量放在Laravel-> Blade

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}} 

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

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

+0

把它们在阵列中,或作为一个StdClass对象的属性,并传递到刀片 –

+0

酵母..但在这种情况下我了解我不得不通过它明确的观点..一遍又一遍。 – rrubiorr81

回答

7

您可以使用View作曲家:

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

你可以把你的路线文件,过滤文件或一样,我加入

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

要创建app/composers.php和负载你app/start/global.php文件。

视图共享是另一种选择:

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

我应该在哪里放置这个视图::共享呼叫? – rrubiorr81

+1

取决于您如何获取$ client_to_show的信息。但是你可以添加到你的控制器__construct(),但是如果这是全局的,你也可以使用像'app/composers.php'这样的文件,正如我在上一个答案编辑中所说的那样。 –

+0

thx,@Antonio ..!相当有用的信息.. – rrubiorr81