Наилучшим способом было бы использовать переменную с помощью View::share('var', $value);
Проблемы с составлением с использованием "*"
:
Рассмотрим следующий подход:
<?php
// from AppServiceProvider::boot()
$viewFactory = $this->app->make(Factory::class);
$viewFacrory->compose('*', GlobalComposer::class);
Из примера просмотра лезвия:
@for($i = 0; $i<1000; $i++)
@include('some_partial_view_to_display_i', ['toDisplay' => $i])
@endfor
Что происходит?
GlobalComposer
создается экземпляром 1000 с использованием App::make
, composing:some_partial_view_to_display_i
обрабатывается 1000 раз. compose
внутри класса GlobalComposer
называется 1000 раз. Но частичный вид some_partial_view_to_display_i
не имеет ничего общего с переменными, составленными GlobalComposer
, но значительно увеличивает время рендеринга.
Лучший подход?
Использование View::share
вдоль сгруппированного промежуточного программного обеспечения.
Route::group(['middleware' => 'WebMiddleware'], function(){
// Web routes
});
Route::group(['prefix' => 'api'], function (){
});
class WebMiddleware {
public function handle($request)
{
\View::share('user', auth()->user());
}
}
Обновить
Если вы используете что-то, что вычисляется по конвейеру промежуточного программного обеспечения, вы можете просто прослушать соответствующее событие или поставить просмотрите промежуточное ПО промежуточного слоя на последней нижней части конвейера.