Генерация html-разметки
Генерировать html-разметку Вам поможет статический класс htmlHelper. Ниже представлены доступные в данный момент статические методы этого класса.
htmlHelper::drawOptionList($options)
Метод генерирует на основе входного массива разметку вида:
<option> ... </option>
предназначенную для выпадающих списков. Входной массив может содержать как объекты, так и массивы, описывающие состояния опшнов:
<?php
$options = array(
array('value' => 1, 'description' => 'Значение 1'),
array('value' => 2, 'description' => 'Значение 2'),
array('value' => 3, 'description' => 'Значение 3'),
array('value' => 4, 'description' => 'Значение 4', 'selected' => true),
array('value' => 5, 'description' => 'Значение 5'),
);
?>
<select name="options">
<?php echo htmlHelper::drawOptionList($options); ?>
</select>
htmlHelper::drawTreeLinksList($arr)
Метод возвращает сгенерированную разметку вложенных списков с ссылками: ul li a. Полезен при генерации выпадающих меню или построения ul-li-дерева в карте сайта. Принимает в качестве аргумента линейный массив вида:
$nodes = array(
array('lvl' => 1, 'node_name' => 'Название 1', 'page_alias' => '/url/page1.html'),
array('lvl' => 2, 'node_name' => 'Название 2', 'page_alias' => '/url/page2.html'),
array('lvl' => 3, 'node_name' => 'Название 3', 'page_alias' => '/url/page3.html'),
array('lvl' => 3, 'node_name' => 'Название 4', 'page_alias' => '/url/page4.html'),
array('lvl' => 1, 'node_name' => 'Название 5', 'page_alias' => '/url/page5.html'),
array('lvl' => 1, 'node_name' => 'Название 6', 'page_alias' => '/url/page6.html'),
array('lvl' => 2, 'node_name' => 'Название 7', 'page_alias' => '/url/page7.html'),
array('lvl' => 1, 'node_name' => 'Название 8', 'page_alias' => '/url/page8.html')
);
<?php echo htmlHelper::drawTreeLinksList($nodes); ?>
Эффективность данного метода в том, что он строит разметку вложенных списков без рекурсии за один обход массива. Кроме того, как можно видеть из приведенного выше примера — совершенно не требуется соблюдать отношения «родитель-потомок», т.к. при генерации считается что входной массив уже отсортирован, а отношения выстраиваются только по уровню вложенности.
Это может быть полезным при выборке узлов с фильтрацией по типам и/или нестандартной сортировкой. Отношения «родитель-потомок» в такой выборке будут безвозвратно потеряны, однако вложенные списки будут сгенерированы корректно.