{"id":20523094,"url":"https://github.com/itstructure/yii2-multi-level-menu","last_synced_at":"2026-03-15T03:19:48.414Z","repository":{"id":56994574,"uuid":"134035041","full_name":"itstructure/yii2-multi-level-menu","owner":"itstructure","description":"Widget for rendering multilevel menu for Yii2 Framework","archived":false,"fork":false,"pushed_at":"2023-01-30T13:44:38.000Z","size":56,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-07-20T01:44:15.702Z","etag":null,"topics":["menu","multilevel-menu","yii2"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/itstructure.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-05-19T06:08:58.000Z","updated_at":"2023-01-31T08:29:06.000Z","dependencies_parsed_at":"2023-02-16T08:01:21.080Z","dependency_job_id":null,"html_url":"https://github.com/itstructure/yii2-multi-level-menu","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/itstructure/yii2-multi-level-menu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itstructure%2Fyii2-multi-level-menu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itstructure%2Fyii2-multi-level-menu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itstructure%2Fyii2-multi-level-menu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itstructure%2Fyii2-multi-level-menu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/itstructure","download_url":"https://codeload.github.com/itstructure/yii2-multi-level-menu/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itstructure%2Fyii2-multi-level-menu/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274997468,"owners_count":25387932,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-13T02:00:10.085Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["menu","multilevel-menu","yii2"],"created_at":"2024-11-15T22:37:55.771Z","updated_at":"2026-03-15T03:19:48.398Z","avatar_url":"https://github.com/itstructure.png","language":"PHP","readme":"Yii2 Multilevel menu widget\n==============\n\n## Introduction\n\n[![Latest Stable Version](https://poser.pugx.org/itstructure/yii2-multi-level-menu/v/stable)](https://packagist.org/packages/itstructure/yii2-multi-level-menu)\n[![Latest Unstable Version](https://poser.pugx.org/itstructure/yii2-multi-level-menu/v/unstable)](https://packagist.org/packages/itstructure/yii2-multi-level-menu)\n[![License](https://poser.pugx.org/itstructure/yii2-multi-level-menu/license)](https://packagist.org/packages/itstructure/yii2-multi-level-menu)\n[![Total Downloads](https://poser.pugx.org/itstructure/yii2-multi-level-menu/downloads)](https://packagist.org/packages/itstructure/yii2-multi-level-menu)\n[![Build Status](https://scrutinizer-ci.com/g/itstructure/yii2-multi-level-menu/badges/build.png?b=master)](https://scrutinizer-ci.com/g/itstructure/yii2-multi-level-menu/build-status/master)\n[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/itstructure/yii2-multi-level-menu/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/itstructure/yii2-multi-level-menu/?branch=master)\n\nThis widget is designed to display a multilevel menu, in which there can be nested submenus. Used for Yii2 v2.0.x framework.\n\nThe widget uses data from the **database**, in which there are, in addition to the primary keys, also the parent keys.\n\nData from the **database** is taken from an active model, which instance of **yii\\db\\ActiveRecord**.\n\n![Multi level menu example scheme](https://github.com/itstructure/yii2-multi-level-menu/blob/master/ML_menu_en.jpg)\n\n## Requirements\n\n- php \u003e= 7.1\n- composer 2\n\n## Installation\n\nVia composer:\n\n`composer require itstructure/yii2-multi-level-menu ~3.2.10`\n\n## Usage\n\n### Usage in view template\n\nBase application config must be like in example below:\n\n```php\nuse Itstructure\\MultiLevelMenu\\MenuWidget;\n```\n\n```php\necho MenuWidget::widget([\n    'menuId' =\u003e 'multi-level-menu',\n    'data' =\u003e array_values($dataProvider-\u003egetModels()),\n    'itemTemplate' =\u003e '@app/views/MultiLevelMenu/main.php'\n]);\n```\n\nExample of `itemTemplate` file:\n\n```php\nuse yii\\helpers\\{Url, Html};\n/* @var app\\models\\Page $data */\n```\n\n```php\n\u003cspan\u003e\n    \u003c?php echo Html::a(\n        Html::encode($data-\u003etitle),\n        Url::to(['view', 'id' =\u003e $data-\u003eid])\n    ) ?\u003e\n\u003c/span\u003e\n```\n\nExample when there are some properties for nesting levels:\n\n```php\nuse Itstructure\\MultiLevelMenu\\MenuWidget;\n```\n\n```php\necho MenuWidget::widget([\n    'menuId' =\u003e 'multi-level-menu',\n    'data' =\u003e array_values($dataProvider-\u003egetModels()),\n    'itemTemplate' =\u003e '@app/views/MultiLevelMenu/main.php'\n    'mainContainerOptions' =\u003e [\n        'class' =\u003e 'list-group'\n    ],\n    'itemContainerOptions' =\u003e [\n        'levels' =\u003e [\n            ['class' =\u003e 'list-group-item'],\n            ['class' =\u003e 'list-group-item list-group-item-success'],\n            ['class' =\u003e 'list-group-item list-group-item-warning'],\n        ]\n    ],\n]);\n```\n\nExample when there are some properties as callable function:\n\n```php\nuse Itstructure\\MultiLevelMenu\\MenuWidget;\n```\n\n```php\necho MenuWidget::widget([\n    'menuId' =\u003e 'multi-level-menu',\n    'data' =\u003e array_values($dataProvider-\u003egetModels()),\n    'itemTemplate' =\u003e '@app/views/MultiLevelMenu/main.php'\n    'mainContainerOptions' =\u003e function () {\n        return [\n            'class' =\u003e $level == 0 ? 'nav navbar-nav navbar-right' : 'dropdown-menu'\n        ];\n    },\n    'itemTemplateParams' =\u003e function ($level, $item) {\n        return [\n            'linkOptions' =\u003e isset($item['items']) \u0026\u0026 count($item['items']) \u003e 0 ? [\n                'class' =\u003e 'dropdown-toggle',\n                'data-toggle' =\u003e 'dropdown',\n                'aria-haspopup' =\u003e 'true',\n                'aria-expanded' =\u003e 'false',\n            ] : [],\n        ];\n    },\n    'itemContainerOptions' =\u003e function ($level, $item) {\n        return $level == 0 ? [\n            'class' =\u003e isset($item['items']) \u0026\u0026 count($item['items']) \u003e 0 ? 'nav-item dropdown' : 'nav-item'\n        ] : [\n            'class' =\u003e isset($item['items']) \u0026\u0026 count($item['items']) \u003e 0 ? 'dropdown-item dropdown' : 'dropdown-item'\n        ];\n    }\n]);\n```\n\n\n### Database table structure example\n\n`Table \"pages\"`\n\n    | id  | parentId |   title    | ... |\n    |-----|----------|------------|-----|\n    |  1  |   NULL   |   item 1   | ... |\n    |  2  |   NULL   |   item 2   | ... |\n    |  3  |   NULL   |   item 3   | ... |\n    |  4  |   NULL   |   item 4   | ... |\n    |  5  |   NULL   |   item 5   | ... |\n    |  6  |     2    |  item 2.1  | ... |\n    |  7  |     2    |  item 2.2  | ... |\n    |  8  |     7    | item 2.2.1 | ... |\n    |  9  |     7    | item 2.2.2 | ... |\n    |  10 |     7    | item 2.2.3 | ... |\n    | ... |    ...   |     ...    | ... |\n\n## License\n\nCopyright © 2018-2025 Andrey Girnik girnikandrey@gmail.com.\n\nLicensed under the [MIT license](http://opensource.org/licenses/MIT). See LICENSE.txt for details.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitstructure%2Fyii2-multi-level-menu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitstructure%2Fyii2-multi-level-menu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitstructure%2Fyii2-multi-level-menu/lists"}