Laravel Nova - 重新排序左侧导航菜单项
2022-08-30 22:41:52
你可以在
App\Providers\NovaServiceProvider.php
添加一个方法 resources() 并手动注册资源,如
protected function resources()
{
Nova::resources([
User::class,
Post::class,
]);
}
互生
这个要点中提到了另一种方式,这似乎也很好,但官方文档还没有提到它。
资源
<?php
namespace App\Nova;
class User extends Resource
{
/**
* The model the resource corresponds to.
*
* @var string
*/
public static $model = 'App\\User';
/**
* Custom priority level of the resource.
*
* @var int
*/
public static $priority = 1;
// ...
}
和在 NovaServiceProvider 中
<?php
namespace App\Providers;
use Laravel\Nova\Nova;
use Laravel\Nova\Cards\Help;
use Illuminate\Support\Facades\Gate;
use Laravel\Nova\NovaApplicationServiceProvider;
class NovaServiceProvider extends NovaApplicationServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
Nova::sortResourcesBy(function ($resource) {
return $resource::$priority ?? 99999;
});
}
}
这样,您可以设置资源的优先级,并根据优先级呈现资源。
更简洁的方式,并在最新的Nova 3.x上进行了测试。此外,自2.10+版本以来,它已被添加到Nova中,您需要做的就是在nova类上添加一个静态属性。例如,客户端将是:
/**
* The side nav menu order.
*
* @var int
*/
public static $priority = 2;
然后,您可以使用NovaServiceProvider告诉nova使用您的自定义排序。您可以将代码放在boot method
public function boot()
{
Nova::sortResourcesBy(function ($resource) {
return $resource::$priority ?? 9999;
});
}
**参考新星私人回购