Laravel Dynamic Многоуровневое выпадающее меню - PullRequest
0 голосов
/ 28 марта 2019

Я пытался решить эту проблему для себя, но я не могу найти решение, если бы кто-то мог мне помочь, я был бы очень благодарен.

Я создаю многоуровневое динамическое меню,

| id | parend_id | name     | url                 |

| 1  |     0     | Level 1  | /level_one          |

| 2  |     1     | Sublevel | /level_one/sublevel |

| 3  |     0     | Level 2  | /level_two          | 

Модель

в моей модели есть две рекурсивные функции, которые помогают мне генерировать дерево:

public function children() {
    return $this->hasMany('App\Menus', 'parent_id', 'id');
}

public static function tree() {
    return static::with(implode('.', array_fill(0, 100, 'children')))->where('parent_id', '=', '0')->get();
}

из контроллера Я просто создаю объект и вызываю функцию, и всеработает нормально, но я попытался решить, что когда у уровня больше нет дочерних элементов, он не показывает мой пустой массив, я не могу сделать это, если он не печатает его внутри объекта

$components = new Component;
try {
     $menu = $components->tree();
} catch (Exception $e) {}
return response()->json($menu);

Я получаю это:

[
    {
        "id": 1,
        "parent_id": 0,
        "name": "Level 1",
        "url": "/level_one",
        "children": [
            {
                "id": 2,
                "parent_id": 1,
                "name": "Sublevel",
                "url": "/level_one/suvlevel",
                "children": []
            },
         ]
    },
    {
        "id": 3,
        "parent_id": 0,
        "name": "Level 2",
        "url": "/level_two",
        "children": []
    }
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...