2015-01-01 4 views
1

Я пытаюсь заполнить поле выбора из таблицы категорий с помощью Tree Behavior.Создайте список деревьев до определенного уровня только в CakePHP

$ категории = $ this-> category-> generateTreeList (NULL, NULL, NULL, '     ');

В нем перечислены все категории. Поскольку дерево находится на уровне до 5 уровней, поле выбора заполняется массово.

Есть ли способ ограничить количество уровней для генерации, так что мне не нужно отображать все данные дерева? Я бы хотел отобразить только 3-й уровень.

Я использую CakePHP 2.3.5.

ответ

1
$this->Category->generateTreeList(null, null, null,' ', 3); 

Согласно документации для generateTreeList() есть FITH параметр для уровней в глубину.

generateTreeList ($ условия = NULL, $ ключевого ресурса = NULL, $ valuePath = NULL, $ распорка = '_', $ рекурсивный = нуль)

Параметры:
  $ условия - Использует тот же условные параметры как find().
  $ keyPath - Путь к полю, используемому для ключа.
  $ valuePath - путь к полю, используемому для метки.
  $ spacer - Строка, используемая перед каждым элементом для указания глубины.
  $ рекурсивный - число уровней в глубину, чтобы получать соответствующие записи

+0

Рекурсивный параметр не фильтрует уровень. Он просто заполняет глубину отображаемой информации, а не фактическую глубину дерева. –

0

Вы можете использовать this поведение, которое сохраняет глубину/уровень каждого узла, когда он создан/обновлен. Затем при извлечении записей с помощью функции generateTreeList() вы можете просто указать глубину в условиях.

Смежные вопросы