novius/laravel-nova-menu

一个用于管理应用程序菜单的 Nova 资源工具。

7.0.0 2024-08-06 14:19 UTC

README

Travis Packagist Release Licence

一个用于管理菜单的 Nova 工具。

要求

  • PHP >= 8.1
  • Laravel Nova >= 4.0
  • Laravel 框架 >= 9.0 | >= 10.0 | >= 11.0

注意:以下说明适用于 Laravel >= 9.0 和 Laravel Nova 4.0。如果您使用的是早期版本,请参阅早期版本文档

安装

composer require novius/laravel-nova-menu

然后,启动迁移

php artisan migrate

配置

有一些可覆盖的选项可用。

php artisan vendor:publish --provider="Novius\LaravelNovaMenu\LaravelNovaMenuServiceProvider" --tag="config"

编辑默认模板

运行

php artisan vendor:publish --provider="Novius\LaravelNovaMenu\LaravelNovaMenuServiceProvider" --tag="views"

用法

Blade 指令

您可以使用以下方式显示菜单:

<x-laravel-nova-menu::menu menu="slug-of-menu" />

您还可以通过传递模型实例来显示菜单

<x-laravel-nova-menu::menu :menu="Menu::find(1)" />

默认情况下,已激活 app()->getLocale() 的回退。

如果您想强制使用没有回退的特定 slug,可以调用

<x-laravel-nova-menu::menu menu="slug-of-menu" :localeFallback="false" />

如果您想使用特定的视图,可以调用

<x-laravel-nova-menu::menu menu="slug-of-menu" view="partial/menu" />

覆盖视图

您可以使用以下方式覆盖视图

php artisan vendor:publish --provider="Novius\LaravelNovaMenu\LaravelNovaMenuServiceProvider" --tag="views"

管理内部链接可能性

Laravel Nova Menu 使用 Laravel Linkable 来管理可链接的路由和模型。请参阅文档。

自定义传递给视图的树

<?php

namespace App\Providers;

use Novius\LaravelNovaMenu\LaravelNovaMenuService;

class AppServiceProvider extends ServiceProvider
{
     // ...
     
    public function boot()
    {
        /**
         * @var LaravelNovaMenuService $menu
         */
        $menu = $this->app->get('laravel-nova-menu');
        $menu->setTreeUsing(function(Menu $menu, array $tree) {
            // ... your actions on tree
            return $tree;
        });
    }
}

自定义树构建

<?php

namespace App\Providers;

use Novius\LaravelNovaMenu\LaravelNovaMenuService;

class AppServiceProvider extends ServiceProvider
{
     // ...
     
    public function boot()
    {
        /**
         * @var LaravelNovaMenuService $menu
         */
        $menu = $this->app->get('laravel-nova-menu');
        $menu->setBuildTreeUsing(function(Collection $items) {
            // ... your actions to build tree as an array
            return $tree;
        });
    }
}

代码风格检查

使用以下方式运行 php-cs

composer run-script lint

贡献

欢迎贡献!在 Github 上提交问题或创建 Pull Request。

许可证

本软件包在GNU Affero 通用公共许可证 v3 或(根据您的选择)任何后续版本下发布。