Laravel Blade中的全局变量

时间:2017-08-22 01:06:38

标签: php json global-variables laravel-blade

我是Laravel服务提供商的新手,最近我遇到了一个问题。我正试图在所有视图(全局)中从服务提供者访问变量。变量以json格式出现。 这是我的ServiceProvider

<?php

  namespace App\Providers;

  use Illuminate\Support\ServiceProvider;

  class ExternalVarServiceProvider extends ServiceProvider
  {
      /**
       * Bootstrap the application ExternalVarServiceProvider.
       *
       * @return void
       */
      public function boot()
      {
          $url = "json-source-url";
          $json = json_decode(file_get_contents($url), true);
          $var = $json["array_index"];
          //var should be global to all blade files, app.blade.php is main templ
          View::share( 'app', 'var' );
      }

      /**
       * Register the application services.
       *
       * @return void
       */
      public function register()
      {
          //
      }
  }

感谢您阅读,Pat:)

1 个答案:

答案 0 :(得分:2)

您做得对,但您只需要从

更改服务提供商中的此行
View::share( 'app', 'var' );

View::share( 'app', $var );

在您的视图中,您可以像这样使用它

{{$app}}

您也可以在服务提供商中传递数组,如下所示:

\View::share( ['app'=> $var,'app2'=>$var2] );

请注意,根据documentation,共享方法接受键和值,因此应用不是视图名称,而是共享价值