#laravel #include #laravel-blade #partials
#laravel #включить #laravel-blade #частичные
Вопрос:
Это, вероятно, что-то простое, но это заставляет меня задуматься.
Итак, мой шаблон блейда макета имеет следующее:
@include('layouts.partials.sidebar')
{{ $slot }}
@include('layouts.partials.footer')
@include('layouts.partials.scripts')
Я создаю представление, которое загружает шаблон. Я предполагаю, что это анализируется в $slot.
return view('request', [
'boo' => 'Hoo'
]);
Никаких проблем, страница загружается, и переменная ‘boo’ доступна как {{ $ boo }} в шаблоне ‘requests’.
Но мой вопрос в том, как я могу передать переменную ‘boo’ во включенный файл в файле макета? В этом случае следующее:
@include('layouts.partials.scripts')
Итак, в ‘layouts.partials.scripts’ как я могу получить доступ к {{ $ boo }}? На данный момент я просто получаю неопределенную ошибку индекса.
Большое вам спасибо за помощь.
Ответ №1:
@include('layouts.partials.scripts', ['boo' => 'Hoo'])
Документы Laravel: https://laravel.com/docs/8.x/blade#including-subviews
Если у вас есть частичная навигация, или заголовок, или боковая панель, которая является частью основного макета, из которого вы создаете другие представления, и для этого требуются некоторые данные, которые не меняются от одного представления к другому, например, ссылки навигации.
Тогда вместо передачи данных из каждого метода контроллера вы можете определить view composer в методе service provider — boot ()
//Service Provider's boot method
public function boot()
{
View::composer('layouts.partials.sidebar', function ($view) {
//$links = get the data for links
return $view->with('links', $links);
});
}
Laravel dos: https://laravel.com/docs/master/views#view-composers