Comments 12
небольшой вопросик: а почему модель занимается генерацией урла?
Непонятно зачем использовать nestedset, если в базе хранится полный url. Получается, что для генерации любого url достаточно знать parent?
Если меняется заглушка или родитель раздела, то нужно обновлять пути всех его потомков. Здесь как раз вступает nested set. Тем более что этим функционал расширения не ограничивается.
Разве нельзя получить всех потомков, независимо от уровня вложенности, по url родителя? Ведь у всех потомков хранится полный путь — это всего один запрос к базе.
может кто подскажет как избавиться от
catalog/ в
что-бы было что-то похожее на
Для категорий хочу что-бы получилось:
{category}/{subcategory1}/.../{subcategoryN}
а для продукта:
{category}/{subcategory1}/.../{subcategoryN}/{proiduct}
catalog/ в
$router->get('catalog/{path}', ...)
что-бы было что-то похожее на
$router->get('{path}', ...)
Для категорий хочу что-бы получилось:
{category}/{subcategory1}/.../{subcategoryN}
а для продукта:
{category}/{subcategory1}/.../{subcategoryN}/{proiduct}
Этот код по моему сбивает порядок и приводит к тому что у descendants не правильные значения path:
Например, есть следующая структура категорий:
Тут сначала идет название категории и в скобках значение атрибута path.
name (path)
Меняю название parent category на parent cat. Результат:
Потом еще раз меняю название parent cat на parent. Результат:
Из примера понятно, что категория 3-го уровня обновляется раньше категории 2-го уровня.
P.S.: Все работало нормально, пока не добавил категорию 3-го уровня.
$descendants->push($this)->linkNodes()->pop();
Например, есть следующая структура категорий:
parent category (parent-category)
----child (parent-category-child)
--------descendant (parent-category-child-descendant)
Тут сначала идет название категории и в скобках значение атрибута path.
name (path)
Меняю название parent category на parent cat. Результат:
parent cat (parent-cat)
----child (parent-cat-child)
--------descendant (parent-category-child-descendant) // не правильное значение
Потом еще раз меняю название parent cat на parent. Результат:
parent (parent)
----child (parent-child)
--------descendant (parent-cat-child-descendant) // не правильное значение
Из примера понятно, что категория 3-го уровня обновляется раньше категории 2-го уровня.
// Получаем всех потомков в древовидном порядке
$descendants = $this->descendants()->defaultOrder()->get();
// Данный метод заполняет отношения parent и children
$descendants->push($this)->linkNodes()->pop(); // Но сбиваем порядок! Надо убрать.
P.S.: Все работало нормально, пока не добавил категорию 3-го уровня.
Sign up to leave a comment.
Дерево разделов неограниченной вложенности и URL