laravel刀片服务注入可以从外部视图完成

时间:2016-10-26 11:54:13

标签: laravel laravel-5.3 laravel-blade

我想为所有应用程序视图全局注入服务 我可以通过应用服务提供商引导方法注入它吗?

2 个答案:

答案 0 :(得分:2)

您想注入什么服务?你将如何使用它?

在所有视图中共享变量的简便方法是调用share方法:

view()->share([

    'myService' => app()->make(My\Service::class),
]);

您可以在控制器内调用它,也可以在中间件内调用,以便在许多不同的控制器上工作。

然后,在你的观点中,像这样:

@foreach ($myService->getItems() as $item)
    ...
@endforeach

答案 1 :(得分:2)

请按照以下步骤操作:

创建服务提供商:php artisan make:provider UserServiceProvider

转到

  

应用\提供商\ UserServiceProvider.php

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\View;
use Auth;

class UserServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
     */

    public function boot()
    { 
        // key can be anything
        // value what you want
        View::share('key', 'value');
    }

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

config\app.php

中注册此服务提供商
App\Providers\UserServiceProvider::class,

现在,您可以为每个视图访问此key