答案 0 :(得分:9)
更干净的方式,并在最新的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;
});
}
**参考文献Nova Private Repo
答案 1 :(得分:2)
有两种方法可以实现此目的:
1。优先级方法
public static $priority = 2;
public function boot()
{
Nova::sortResourcesBy(function ($resource) {
return $resource::$priority ?? 9999;
});
}
2。 NovaServiceProvider中的订购资源模型
在NovaServiceProvider中,订购资源模型,如下所示:
protected function resources()
{
Nova::resources([
User::class,
Post::class,
]);
}
答案 2 :(得分:1)
如果有帮助,您可以使用分组。我知道这不是100%的修复程序,但也许会有所帮助。
public static $group = 'Admin';
答案 3 :(得分:1)
您可以在
中进行操作App\Providers\NovaServiceProvider.php
添加方法resources()并手动注册资源,例如
protected function resources()
{
Nova::resources([
User::class,
Post::class,
]);
}
答案 4 :(得分:1)
将/nova/resources/navigation.blade.php {{ $group }}
更改为以下内容:
{!! $group !!}
现在,您可以轻松地对组进行如下排序:
public static $group = '<span class="hidden">20</span>Music';
或
public static $group = '<span class="hidden">30</span>User';
注意:您必须在标题中转换特殊字符!
通过链接,还有点其他...。 第一种方法:肮脏丑陋
您可以更改
{{ $resource::label() }}
到
{{ substr($resource::label(), 1) }}
然后,您可以按资源名称的首字母对链接进行排序。
或者更好的链接方法 板条箱app / Nova / CustomResource.php:
<?php
namespace App\Nova;
use Illuminate\Support\Str;
abstract class CustomResource extends Resource
{
public static $label = '';
/**
* @return string
*/
public static function label()
{
if(static::$label) {
return static::$label;
}
return Str::plural(Str::title(Str::snake(class_basename(get_called_class()), ' ')));
}
}
更改/nova/resources/navigation.blade.php
{!! $resource::label() !!}
在Nova资源中,扩展此自定义资源,然后可以使用公共静态$ label:
class Lyric extends CustomResource
{
public static $label = '<span class="hidden">10</span>Lyrics';
public static function singularLabel()
{
return __('Lyric');
}
注意:您必须在标题中转换特殊字符!
答案 5 :(得分:0)
对组进行排序:
将此添加到您的资源中:
public static function groupOrder() {
return 9999999;
}
您可以通过将其添加到任何成员资源以降级其在导航树中的顺序来覆盖它:
public static function groupOrder() {
return 5;
}
添加此内容,然后在resourcemanager的结尾处返回(我希望我不必在此位置覆盖此内容):
$arrSort = [];
foreach ($navigation as $group => $resources) {
$resourcesGruoupOrders = [];
foreach ($resources as $aResource) {
$resourcesGruoupOrders[] = $aResource::groupOrder();
}
$arrSort[] = min($resourcesGruoupOrders);
}
$navigation = json_decode(json_encode($navigation), true);
array_multisort($navigation, SORT_ASC, SORT_NUMERIC, $arrSort);