Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 05.10.2017 20:04:09

Вывод одного меню на всех страницах

Подскажите пожалуйста как осуществить вывод меню? Если оно у меня выводится динамически и есть возможность редактировать его из админки(делать активным/паcивным). Не пойму как и куда передать его чтоб выводилось на всех страницах сайта а не заново писать запрос в каждом контроллере  получать меню. Сам запрос по нахождению меню

$menuTop = DB::table('menu_items')
            ->leftJoin('menus','menu_items.menu_id','=','menus.id')
            ->leftJoin('menu_groups','menu_items.group_menu_id','=','menu_groups.id')
            ->where('menu_items.group_menu_id', '=' ,'1')
            ->get();

Не в сети

#2 05.10.2017 21:23:09

Re: Вывод одного меню на всех страницах

Ты можешь использовать например виджеты как быстрый вариант, есть огромное количество пакетов!

https://github.com/arrilot/laravel-widgets

Обязательно установи пакет и попробуй понять как они устроены. Успехов!

Не в сети

#3 05.10.2017 23:55:32

Alexsaab
Откуда: Москва
Сообщений: 92

Re: Вывод одного меню на всех страницах

Добрый день.
Если бы я делал делал так.
1) Создать MenuController в нем единственный метод index;

public function index() {
$menuTop = DB::table('menu_items')
            ->leftJoin('menus','menu_items.menu_id','=','menus.id')
            ->leftJoin('menu_groups','menu_items.group_menu_id','=','menu_groups.id')
            ->where('menu_items.group_menu_id', '=' ,'1')
            ->get();

  // Тут важно вернуть Json
return response()->json($menuTop);
}

2) В routax прописиваем

Route::get('ajax/menu', 'MenuController@index');

3) Далее идете в свой шаблон и прописываете там какой то <div class='menu'></div>
4) Делаете в общем файле Javascript запрос ajax по адресу ajax/menu получаете список меню и выводите эти меню уже форматировано через jquery или что там вы используете в <div class='menu'>Сюда ваш Javascript должен вывести меню</div>

Получаете сайт работающий с rest запросами, а это:
Стильно,
Модно,
Современно! big_smile

4 пункт напишите сами мне писать забесплатно лень. Но можно, как коллега говорит и через библиотеки модулей.

А вообще я бы не задрачивался и выводил бы меню отдельным статическим блоком. У меня в юносте тоже были такие порывы на Drupal 4, делать динамическое меню из терминов таксономии и дергать его из базы. Сейчас я к этому охладел. smile Меню в основном это статика, как показывает практика на 99% это так.

С ув., Алексей

Не в сети

#4 06.10.2017 00:48:06

Re: Вывод одного меню на всех страницах

public function index() {
$menuTop = DB::table('menu_items')
            ->leftJoin('menus','menu_items.menu_id','=','menus.id')
            ->leftJoin('menu_groups','menu_items.group_menu_id','=','menu_groups.id')
            ->where('menu_items.group_menu_id', '=' ,'1')
            ->get();
  // Тут важно вернуть Json
return response()->json($menuTop);
}

Мне больше нравится так
return (string)$menuTop;

Не в сети

#5 06.10.2017 08:05:46

Re: Вывод одного меню на всех страницах

Лучше всего вариант с виджетом. 1 раз пропишешь и всё ок smile

Не в сети

#6 06.10.2017 12:11:44

Re: Вывод одного меню на всех страницах

Спасибо всем! Только начинаю ознакамливаться с Laravel и Ваши советы очень нужны мне) Реально ломал голову как сделать, но в голову не приходило то, что мне предложили! Еще раз спасибо!:)

Не в сети

Подвал раздела