Laravel по-русски

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

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

#1 17.06.2015 22:28:12

помощь по многоуровневому меню

сама таблица в бд стандартна:

CREATE TABLE `leftmenu` (
	`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
	`title` CHAR(100) NOT NULL COLLATE 'utf8_unicode_ci',
	`url` CHAR(255) NOT NULL DEFAULT '#' COLLATE 'utf8_unicode_ci',
	`parent_id` INT(10) UNSIGNED NULL DEFAULT '0',
	PRIMARY KEY (`id`)
)

далее получаем записи из бд и группируем по parent_id

$menu = Menu::orderBy('id')->get()->groupBy('parent_id');

основной вопрос таков, как это вывести во view?
на чистом php такой массив(тут коллекция) выводится рекурсией, но как эту рекурсию организовать в twig/blade?!

возможно есть другая реализация вывода многоуровневого меню?!

Не в сети

#2 18.06.2015 05:06:28

Re: помощь по многоуровневому меню

Кроме рекурсии, другого способа сделать многоуровневое меню с бесконечной вложенностью нет. Но... В вьюшке рекурсию делать не следует. Рекурсию делаешь в контролере. И результатом работы должна стать переменная в которой содержится весь html код.

$out_line='';
function build_tree($parent_id, $out_line)
{
....
return $outline;
}

И во вьюшке уже пишешь только {{$out_line}}
Содержимое $out_line должно быть что-то вроде "<ul><li>item1</li><li><ul><li>item1.1</li></ul></li></ul>"

Изменено Afatar (18.06.2015 05:07:57)

Не в сети

#3 18.06.2015 12:33:09

Re: помощь по многоуровневому меню

По идее и в контроллере это делать не следует. Завтра поменялось оформление, применяемые стили. И что править это в контроллере?! Тогда уже лучше во вьюхе... там же мы размещаем разные foreach, if и т.п. Ведь это не логика работы с данными, а логика вывода данных. А ей место во вью имхо.

Не в сети

#4 18.06.2015 12:45:32

rusbear28

Re: помощь по многоуровневому меню

Все верно, в контроллере этого делать не стоит.

Вот посмотри пример рекурсии здесь: http://www.sitepoint.com/laravel-blade- … -partials/

#5 18.06.2015 13:25:49

Re: помощь по многоуровневому меню

То, что нужно! Благодарю! Сейчас буду разбираться! smile

Не в сети

#6 18.06.2015 23:25:18

Re: помощь по многоуровневому меню

переписал http://www.sitepoint.com/laravel-blade- … -partials/ под Twig smile Работает!
Очень интересный подход рекурсии в шаблонизаторе!

Изменено voidshah (18.06.2015 23:26:12)

Не в сети

#7 02.11.2016 12:39:58

Разработчик сайтов

Re: помощь по многоуровневому меню

Вот правильный пример древовидного списка в Twig
По этому примеру можно сделать много чего интересного.

Зачем делать это с помощью PHP функций если шаблонизатор сам прекрасно это делает?

#8 02.11.2016 13:47:08

Re: помощь по многоуровневому меню

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

Не в сети

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