Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Как сделать в форме выпадающий список с многоуровневой иерархией? Ну типа
животные
млекопитающие
кита
растения
цитрусовые
апельсин
камни
А то стандартно максимум 2 уровня тащит
echo Form::select('animal', array(
'Кошки' => array('leopard' => 'Леопард'),
'Собаки' => array('spaniel' => 'Спаниель'),
));
Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20
Не в сети
А HTML вообще позволяет создавать трехуровневые списки (я ни разу таких не видел)? Если позволяет, то нужно писать свой Form::macro(), потому что если посмотреть на код Form::select(), то видно, что метод работает только с одно- и двухуровневым массивом.
Не в сети
Наверное он имел ввиду обычный селект с nbsp отступами перед титулами.
сразу автору сообщу, что чтобы построить этот список необходимо нагрузить процессор, что на дешёвых хостингах при большом наплыве посетителей просуммонит письмо от администрации повысить тарифный план на пустом месте.
Изменено hzone (30.11.2016 12:41:49)
Не в сети
Если дерево перестраивать при редактировании а не при чтении никаких проблем не будет.
Топикстертеру курить гугл, к примеру по запросу "mysql nested tree"
Не в сети
Так с ходу пример с гугла
Не в сети
Вложенные множества помогают, когда надо показать ветку и что в ней, и то не всегда, ибо строить древовидный массив (к примеру) придётся в любом случае, если хотите показать дерево. Либо проходить по результатам sql-запроса (массиву), чтобы построить третий массив с требуемыми параметрами (хотя есть варианты бд-коннекторов, которые итерируют данные ondemand, но это для продвинутых прогеров).
Короче в любом случае будет нагрузка на процессор при большом кол-ве пользователей и данном элементе на большинстве посещаемых страниц этими пользователями.
Решения (на коленке)
а) записывать к "категории" уровень вложенности и использовать его примерно так
{{ str_repeat( " ", $Category->level ) }}{{ $Category->title }}
Получишь
Категория0
Категория1
Категория1.1
Категория2
Категория2.1
Категория2.2
Мораль :
Согласно религии разделения данных и информации на разные сущности, где информация состоит из данных, Категория0 - есть информация, состоящая из Категории1 и Категории2, являющимися для Категории0 - данными.
Углубляясь в философию проектирования архитектуры, Категория0 несёт аналитическую информацию, состояющую из статистики (сухи[ даннык) - суммы Категорий1 и 2.
В итоге "кеширование" данных в виде информации есть неплохой подход к проектированию высоконагруженных систем.
Не в сети
А можно сделать как на olx или tiu.ru (что б небыло нагрузки на цп).
1. запросить с базы только родителей, при выборе родителя, аяксом отправлять запрос на сервер, и во втором селекте отображать потомков выбранного родителя,и аналогично поступить с 3 селектом.
2. Запросить сразу все данные, и как в первом случае отображать потомков при выборе родителя, только уже не отправлять аякс запрос, а на js проверять массив, и отрисовывать селекты.
Не в сети
3. ещё можно хранить списки на клиенте в local storage, надо только на сервере хранить что-то типа «версии» списка (простое числовое значение – при каждом изменении списков прибавлять единицу) и пересылать этот номер в документе (например в data-атрибуте). как поменялся – перезагружать заново. учитывая что список категорий – штука меняющаяся довольно редко, можно снизить количество таких запросов к минимуму.
Не в сети
Страницы 1