代码之家  ›  专栏  ›  技术社区  ›  Patrick Hellebrand

Laravel叶片中的全局变量

  •  1
  • Patrick Hellebrand  · 技术社区  · 7 年前

    我刚接触Laravel服务提供商,最近遇到了一个问题。我试图在所有视图(全局)中访问来自服务提供商的变量。变量采用json格式。 这是我的服务提供商

    <?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()
          {
              //
          }
      }
    

    谢谢你的阅读,帕特:)

    1 回复  |  直到 7 年前
        1
  •  4
  •   wahdan    7 年前

    你做得很好,但你只需要将服务提供商的这一行从

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

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

    在你看来,你可以这样使用它

    {{$app}}
    

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

    注意,根据 documentation share方法接受键和值,因此 应用程序 钥匙 你的共同价值