Я создал это представление композитора в моем проекте. Но когда я запускаю сайт, он запускает класс несколько раз. Я использую частичные циклы для создания некоторых меню, и это место, где представления вызываются много раз. И поскольку я устанавливаю представление composer (view()->composer('*', ViewComposer::class);
) в каждом представлении, класс вызывается более 200 раз. Я раньше не использовал View Composer и Singletons, поэтому я не уверен, где я делаю неправильно.
Это мой провайдер:
namespace App\Providers;
use App\Http\Composers\ViewComposer;
use Illuminate\Support\ServiceProvider;
class ViewComposerServiceProvider extends ServiceProvider
{
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
view()->composer('*', ViewComposer::class);
}
/**
* Register services.
*
* @return void
*/
public function register()
{
$this->app->singleton(ViewComposer::class);
}
}
а это мой взгляд композитор
<?php
namespace App\Http\Composers;
use Illuminate\Contracts\View\View;
class ViewComposer
{
public function compose(View $view)
{
\Log::debug('view composer runned');
if( auth()->check() ){
$permissions = auth()->user()->permissions()
}
$view->with( "permissions", $permissions);
}
}
Это работает, поэтому поставщик услуг зарегистрирован в config / app.php. Но, как я уже сказал, он запускает SQL-запрос и класс много раз. Где я делаю не так?