Как показать меню на всех страницах Laravel?

У меня есть основной шаблон home.blade.php, содержащий раздел, внутри которого помещаются другие файлы содержимого.

В этом файле у меня есть меню левой боковой панели.

Также у меня есть пользовательский class Menu для отображения пунктов меню.

Можно ли вызвать этот настраиваемый класс / службу, чтобы меню отображалось на всех страницах проекта?

Я не хочу создавать экземпляр class Menu в каждом классе контроллера.


person Community    schedule 07.09.2017    source источник
comment
Посмотрите этот документ Laravel: laravel.com/docs/5.4/blade   -  person parker_codes    schedule 08.09.2017


Ответы (2)


Вам нужен метод Laravel View :: share (). Вы можете создать экземпляр класса в своем классе AppServiceProvider и сделать переменную доступной для всех ваших представлений https://laravel.com/docs/5.5/views#sharing-data-with-all-views

person Rob Fonseca    schedule 07.09.2017
comment
Что лучше использовать: View Composers или Share View? Поддерживают ли обе модели синглтона? - person ; 08.09.2017
comment
Они в некотором роде взаимозаменяемы (я использую share () для всего), но составители представлений кажутся более подходящими для создания экземпляров классов, так что это, вероятно, ваш лучший вариант. - person Rob Fonseca; 08.09.2017
comment
Можете ли вы поделиться примером кода, как это написать и использовать? Потому что в документах недостаточно информации - person ; 08.09.2017

создайте отдельный файл menu.blade.php и напишите код меню в этом файле, включите menu.blade.php в другие подобные файлы. используйте это для расширения кода

@extends ('меню')

person iLaxo Mit    schedule 08.09.2017