介紹一個好用的 Laravel Menu 建構包

rc1021發表於2020-03-17

一個便捷、快速、好用的 Laravel Menu 建構包

Laravel Menu Architect

下載安裝

composer require rc1021/laravel-menu-architect

如果 Laravel 專案小於 5.5 請修改 config/app.php :

providers 陣列里加入以下內容

'providers' => [
        /*
         * Laravel Framework Service Providers...
         */
        Illuminate\Foundation\Providers\ArtisanServiceProvider::class,
        Illuminate\Auth\AuthServiceProvider::class,
        Illuminate\Broadcasting\BroadcastServiceProvider::class,
        ...
        Rc1021\LaravelMenuArchitect\LaravelMenuArchitectServiceProvider::class,
],

接著將 'MenuArct' => Rc1021\LaravelMenuArchitect\Facades\MenuArct::class 加到 $aliases 陣列索引中:

'aliases' => [
    'App' => Illuminate\Support\Facades\App::class,
    'Artisan' => Illuminate\Support\Facades\Artisan::class,
    ...
    'MenuArct' => Rc1021\LaravelMenuArchitect\Facades\MenuArct::class,
],

完成後就可以在程式中,使用 MenuArct 別名了。

接著,在終端機使用下列指令,將此包的組態檔、檢視、資料遷移檔釋出到專案中:

php artisan vendor:publish --provider="Rc1021\\LaravelMenuArchitect\\LaravelMenuArchitectServiceProvider"

開始使用

啟動專案伺服器

php artisan serve

使用瀏覧器開啟 http://127.0.0.1:8000/menu_arct 就能開使編輯選單了。

Demo 的資料

您可以使用 seeder 加入 Demo 的資料

php artisan db:seed --class=MenuArchitectSeeder

接著,在任何一個檢視中加入以下程式碼:

{!! menu_arct('admin') !!}

您指定的選單就會出現在畫面中。

選單資料輸出

您可以使用以下的程式碼取得 arrayjson 資料格式:

$arr_menu = menu_arct('admin', '_array');
$json_menu = menu_arct('admin', '_json');

檢視輸出

  • {!! menu_arct('admin', 'adminlte') !!}
  • {!! menu_arct('admin', 'bootstrap') !!}
  • {!! menu_arct('admin', 'nestable') !!}

Display Menu

操作指定的選單資料

您可以自訂一些方法操作選單資料,以下的例子說明怎麼取得第2級專案:

$customize_func = function ($menu)
{
    // $menu: 是主要選單的 model
    // $menu->items: 選單專案列表
    // $menu->buildTree(): 有階層的專案陣列

    $collection = collect($menu->items);
    $filtered = $collection->filter(function ($item, $key) {
        return $item['depth'] == 2 and isset($item['children']);
    });
    return $filtered->all();
}

$customize_data = menu_arct('admin', 'key', ['key' => $customize_func]);

自訂您的檢視

Custom View

您也可以在專案路徑 resources/views/vendor/menu_architect/display 加入客製化的檢視。

// your_view.blade.php

// $menu: 是主要選單的 model
// $menu->items: 選單專案列表
// $items: 有階層的專案陣列

<ul class="sidebar-menu tree" data-widget="tree">
    @foreach ($items as $item)
        <li class="header {{$item['class']}}" style="{{empty($item['color'])?:'color:'.$item['color']}}" >{{$item['label']}}</li>
        @if(isset($item['children']))
            @each('menu_architect::menu.display.adminlte_list', $item['children'], 'item')
        @endif
    @endforeach
</ul>

接著使用此程式碼 menu_arct('admin', 'your_view') 顯示選單專案的網頁結構。

意見和想法

如果有什麼建議、想法或問題,請到 issue 頁面留下記錄。

貢獻

如果您可以改進或新增任何功能,請隨時提交請求請求。

Credits

授權

  • Laravel Menu Architect *是根據MIT許可條款分發的免費軟體。
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章