Всем доброго времени суток. Начал осваивать yii2, есть задача сгенерировать меню в виде дерева и заполнить его произвольными данными. Чтоб получилось типа такого:
Меню может быть из пяти, шести, семи узлов. То есть количество узлов я указываю при генерации. Алгоритм построения дерева - Nested Sets. То есть я указываю количество узлов и уже сгенерированное меню инсертится в БД по принципу Nested Sets. Подскажите пожалуйста как проще в yii2 выполнить такую задачку?
Самое простое, на мой взгляд это сформировать массив с категориями и рекурсивно пробегать по нему. Например:
$data = [
[
'name' => 'Автомобили',
'children' => [
[
'name' => 'Мазда',
'children' => [
[
'name' => 'Мазда 3',
],
[
'name' => 'Мазда 6'
]
]
]
]
],
[
'name' => 'Мотоциклы',
'children' => [
[
'name' => 'Кавасаки',
],
[
'name' => 'Харлей',
]
]
]
];
function createTreeExample($data, $parent = null) {
foreach ($data as $item) {
$category = new Category(['name' => $item['name']]);
if(!isset($parent)) {
$category->makeRoot();
} else {
$category->appendTo($parent);
}
if (!empty($item['children'])) {
$this->createTreeExample($item['children'], $category);
}
}
}
Методы makeRoot() и appendTo() из расширения yii2-nested-sets
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости