Laravel Nova-重新排序左侧导航菜单项

Vin*_*yan 4 php laravel laravel-nova laravel-5.8

默认情况下,左菜单项的顺序为字母顺序。

我的客户想手动订购那些菜单。任何想法如何使其成为可能?

在此处输入图片说明

zei*_*nbm 11

一种更清洁的方式,并在最新的 Nova 3.x 上进行了测试。此外,自 2.10+ 版本以来,这已添加到 Nova 中,您需要做的就是在 nova 类上添加静态属性。例如客户将是:

/**
 * The side nav menu order.
 *
 * @var int
 */
public static $priority = 2;
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用 NovaServiceProvider 告诉 nova 使用您的自定义排序。您可以将代码放在boot method

public function boot()
{
    Nova::sortResourcesBy(function ($resource) {
        return $resource::$priority ?? 9999;
    });
}
Run Code Online (Sandbox Code Playgroud)

**参考Nova Private Repo


Pra*_*ahu 10

你可以做到

App\Providers\NovaServiceProvider.php
Run Code Online (Sandbox Code Playgroud)

添加方法resources()并手动注册资源,例如

 protected function resources()
    {
        Nova::resources([
            User::class,
            Post::class,
        ]);
    }
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用导航栏中**未**显示的资源,但在导航栏中显示的资源中使用了该资源,则必须将它们添加到资源数组中。否则nova会显示404页面 (2认同)
  • 不知道为什么,但在 Nova 3.x 中对我不起作用。有任何想法吗? (2认同)

Vin*_*yan 7

有两种方法可以实现这一点:

  1. 通过设置资源优先级
  2. 在 NovaServiceProvider 中订购资源模型

1. 优先法

2. 在 NovaServiceProvider 中订购资源模型

在 NovaServiceProvider 中,像这样订购 Resource 模型:

protected function resources()
{
    Nova::resources([
        User::class,
        Post::class,
    ]);
 }
Run Code Online (Sandbox Code Playgroud)