我是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:)
答案 0 :(得分:2)
您做得对,但您只需要从
更改服务提供商中的此行View::share( 'app', 'var' );
到
View::share( 'app', $var );
在您的视图中,您可以像这样使用它
{{$app}}
您也可以在服务提供商中传递数组,如下所示:
\View::share( ['app'=> $var,'app2'=>$var2] );
请注意,根据documentation,共享方法接受键和值,因此应用不是视图名称,而是键共享价值