Хочу во фронтенде просто сделать дерево не используя виджет.
Беру таблицу:(которая уже заполнена в backend)
Код: Выделить всё
CREATE TABLE table (
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
root INT(11) DEFAULT NULL,
lft INT(11) NOT NULL,
rgt INT(11) NOT NULL,
lvl SMALLINT(5) NOT NULL,
name VARCHAR(60) NOT NULL,
...
Создаю модель для frontend:
class Category extends \yii\db\ActiveRecord {
...
}
Код: Выделить всё
public static function getMenuItems(array $models = null)
{
$items = [];
//создаем первый круг
if ($models === null) {
$models = Category::find()->where(['lvl' => 0, 'active'=>1])->all();
}
foreach ($models as $model) {
$items[] = [
'url' => ['material/category', 'id' => $model->id],
'label' => $model->name,
'items' => self::getMenuItems(Category::find()->where(['active'=>1, 'root' => $model->id])->all()),
];
}
return $items;
}
Если делаю для теста:
Код: Выделить всё
'items' => self::getMenuItems(Category::find()->where(['active'=>1, 'root' => $model->id])->one()),
"Argument 1 passed to ...MaterialController::getMenuItems() must be of the type array, object given, called in ..."
Как написать правильно эту рекурсивную функцию ? Не могу найти ошибку.