CMS module for creating menus
Require cube-agency/arbory-menu
$ composer require cube-agency/arbory-menu
Run migrations (creates menus
and menu_items
tables)
$ php artisan migrate
Enable module by adding to config config/arbory.php
and register routes in routes/admin.php
'menu' => [
...
\CubeAgency\ArboryMenu\Http\Controllers\Admin\MenuController::class
]
Admin::modules()->register(\CubeAgency\ArboryMenu\Http\Controllers\Admin\MenuController::class);
-
Create new menu called "Main menu (EN)" via admin module
-
Add
main_menu_id
field to LanguagePage using laravel migrations -
Add select field under LanguagePage definition of fields in
routes/pages.php
Page::register(LanguagePage::class) ->fields(function (FieldSet $fieldSet) { ... $fieldSet->select('main_menu_id')->options( ... ); })
-
Add relation to Pages/LanguagePage.php
public function mainMenu(): BelongsTo { return $this->belongsTo(\CubeAgency\ArboryMenu\Menu\Menu::class); }
-
Get and assign menu items in your view composer
public function compose(View $view): void { ... $view->with([ ... 'mainMenuItems' => $languageNode->content->mainMenu->getPreparedItems() ]); }
-
Output menu in layout view
<ul> @foreach($mainMenuItems as $item) <li class="{{$item['active'] ? 'active' : ''}}"> <a href="{{$item['link']}}"> {{$item['name']}} </a> </li> @endforeach </ul>