Php Laravel叶片中的全局变量

Php Laravel叶片中的全局变量,php,json,global-variables,laravel-blade,Php,Json,Global Variables,Laravel Blade,我是Laravel服务提供商的新手,最近遇到了一个问题。我试图在所有视图(全局)中从服务提供商访问变量。变量采用json格式。 这是我的服务提供商 <?php namespace App\Providers; use Illuminate\Support\ServiceProvider; class ExternalVarServiceProvider extends ServiceProvider { /** * Bootstrap the

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

您的做法是正确的,但您只需将服务提供商中的这一行从

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

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

{{$app}}
您还可以在服务提供商中传递数组,如下所示:

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

请注意,根据共享方法接受键和值,因此app不是视图名称,它是共享值的,您的做法是正确的,但您只需在服务提供商中更改此行即可

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

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

{{$app}}
您还可以在服务提供商中传递数组,如下所示:

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

请注意,根据共享方法接受键和值,因此app不是视图名称,它是共享值的

谢谢,我现在意识到共享采用var名称和值,而不是视图共享值。谢谢,伙计:)谢谢,我现在意识到共享取var名称,然后取值,而不是视图来共享,然后取值。谢谢,伙计:)