cube-agency/arbory-menu

Arbory CMS 的菜单模块

v0.2 2020-04-28 10:41 UTC

This package is auto-updated.

Last update: 2024-09-11 22:02:22 UTC


README

用于创建菜单的CMS模块

安装

需要 cube-agency/arbory-menu

$ composer require cube-agency/arbory-menu

运行迁移(创建 menusmenu_items 表)

$ php artisan migrate

通过将模块添加到 config/arbory.php 中启用模块,并在 routes/admin.php 中注册路由

'menu' => [
    ...
    \CubeAgency\ArboryMenu\Http\Controllers\Admin\MenuController::class
]
Admin::modules()->register(\CubeAgency\ArboryMenu\Http\Controllers\Admin\MenuController::class);

示例用法

  1. 通过管理员模块创建名为 "主菜单(英文)" 的新菜单

  2. 使用 Laravel 迁移将 main_menu_id 字段添加到 LanguagePage

  3. routes/pages.php 中 LanguagePage 字段定义下添加选择字段

    Page::register(LanguagePage::class)
        ->fields(function (FieldSet $fieldSet) {
            ...
            $fieldSet->select('main_menu_id')->options( ... );
        })
  4. 在 Pages/LanguagePage.php 中添加关系

    public function mainMenu(): BelongsTo
    {
        return $this->belongsTo(\CubeAgency\ArboryMenu\Menu\Menu::class);
    }
  5. 在视图构建器中获取并分配菜单项

    public function compose(View $view): void
    {
        ...
        $view->with([
            ...
           'mainMenuItems' => $languageNode->content->mainMenu->getPreparedItems()
        ]);
    }
  6. 在布局视图中输出菜单

     <ul>
        @foreach($mainMenuItems as $item)
            <li class="{{$item['active'] ? 'active' : ''}}">
                <a href="{{$item['link']}}">
                    {{$item['name']}}
                </a>
            </li>
        @endforeach
    </ul>