Laravel 5 – 全局刀片视图variables在所有模板中可用

我想知道如何在Laravel 5中使全局variables在所有的Blade模板中可用?

选项1:

你可以像这样使用view::share()

 <?php namespace App\Http\Controllers; use View; //You can create a BaseController: class BaseController extends Controller { public $variable1 = "I am Data"; public function __construct() { $variable2 = "I am Data 2"; View::share ( 'variable1', $this->variable1 ); View::share ( 'variable2', $variable2 ); View::share ( 'variable3', 'I am Data 3' ); View::share ( 'variable4', ['name'=>'Franky','address'=>'Mars'] ); } } class HomeController extends BaseController { //if you have a constructor in other controllers you need call constructor of parent controller (ie BaseController) like so: public function __construct(){ parent::__construct(); } public function Index(){ //All variable will be available in views return view('home'); } } 

选项2:使用composer php:

  1. app\Composers\HomeComposer.php创build一个composer php文件

注意:创buildapp\Composers如果它不存在

 <?php namespace App\Composers; class HomeComposer { public function compose($view) { //Add your variables $view->with('variable1', 'I am Data') ->with('variable2', 'I am Data 2'); } } 

然后,您可以通过这样做将composer php附加到任何视图

 <?php namespace App\Http\Controllers; use View; class HomeController extends Controller{ public function __construct(){ View::composers([ 'App\Composers\HomeComposer' => ['home'] //attaches HomeComposer to home.blade.php ]); } public function Index(){ return view('home'); } } 

按照这里的build议创build一个新的服务提供者

将您的新服务提供程序添加到configuration文件(config / app.php)。

在新的服务提供商的启动方法中使用:

 View::share( 'something_cool', 'this is a cool shared variable' ); 

现在您可以在所有视图中使用$ something_cool了。

希望这可以帮助。

寻找相同问题的解决scheme,并findLaravel文档中的最佳解决scheme。 只需在这个AppServiceProvider使用View::share

 View::share('key', 'value'); 

详情在这里 。

你可以用视图composer php来做这个。 视图作曲者在模板被加载时执行。 你可以通过一个Closure来为这个视图添加额外的function。 查看composer php,你可以使用通配符。 为每个视图制作视图作曲者只需使用*

 View::composer('*', function($view) { $view->with('variable','Test value'); }); 

您也可以在没有closures的情况下执行此操作,正如您在文档中看到的一样。

 View::composer('*', 'App\Http\ViewComposers\ProfileComposer'); 

个人资料编辑器类必须具有撰写方法。

视图作曲者在视图被渲染时被执行。 Laravel也认为创造者。 这些都是在实例化视图时执行的。

您也可以select使用带有setupLayout方法的BaseController。 然后,您将加载的每个视图都通过setupLayout方法加载,该方法添加了一些额外的数据。 但是,通过使用视图composer php,你很确定代码被执行。 但是使用BaseController方法,您可以更灵活,因为您可以跳过加载额外的数据。

编辑:正如Nic Gutierrez所提到的,你也可以使用视图共享。

另外,您可以在Route.php文件中执行此操作:

 view()->share('variableName', $variable); 

你可以将它闪存到会话中,你可以在.env文件中定义它(静态variables)