maize-tech / laravel-nova-eloquent-sortable
Laravel Nova Eloquent Sortable
Requires
- php: ^8.0
- illuminate/contracts: ^9.0|^10.0
- laravel/nova: ^4.0
- spatie/eloquent-sortable: ^4.0
- spatie/laravel-package-tools: ^1.14.1
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^6.0
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^7.0|^8.0
- pestphp/pest: ^1.21
- pestphp/pest-plugin-laravel: ^1.1
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
README
轻松地为Laravel Nova中的任何资源添加内联可排序操作。
本包基于Spatie的Eloquent Sortable。在进行下一步之前,请务必阅读其文档和安装指南!
安装
您可以通过composer安装此包
composer require maize-tech/laravel-nova-eloquent-sortable
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="nova-eloquent-sortable-config"
这是已发布配置文件的内容
return [ /* |-------------------------------------------------------------------------- | See sortable action permission |-------------------------------------------------------------------------- | | Here you may specify the fully qualified class name of the invokable class | used to determine whether a user can see sortable actions or not. | If null, all users who have access to Nova will have the permission. | */ 'can_see_sortable_action' => null, /* |-------------------------------------------------------------------------- | Run sortable action permission |-------------------------------------------------------------------------- | | Here you may specify the fully qualified class name of the invokable class | used to determine whether a user can sort a given model or not. | If null, all users who have access to Nova will have the permission. | */ 'can_run_sortable_action' => null, ];
使用方法
要使用此包,请将Maize\NovaEloquentSortable\HasEloquentSortable
特质添加到您想要添加标记的nova资源中
use Laravel\Nova\Resource; use Maize\NovaEloquentSortable\HasEloquentSortable; class MyResource extends Resource { use HasEloquentSortable; }
完成后,您只需包含给定资源所需的所有操作即可
use Maize\NovaEloquentSortable\Actions\MoveOrderDownAction; use Maize\NovaEloquentSortable\Actions\MoveOrderUpAction; use Maize\NovaEloquentSortable\Actions\MoveToEndAction; use Maize\NovaEloquentSortable\Actions\MoveToStartAction; public function actions(NovaRequest $request) { return [ MoveOrderDownAction::make(), MoveToEndAction::make(), MoveOrderUpAction::make(), MoveToStartAction::make(), ]; }
您还可以包含自定义的OrderColumn字段,这允许您在索引时显示每个实体的顺序
use Maize\NovaEloquentSortable\Fields\OrderColumn; public function fields(NovaRequest $request) { return [ OrderColumn::new('Order', static::class), ]; }
可用操作
MoveOrderDownAction
MoveOrderDownAction
内联操作将给定模型向下移动一个位置。
当模型已经在最后一个位置时,此操作将自动隐藏。
MoveToEndAction
MoveToEndAction
内联操作将给定模型移动到最后一个位置。
当模型已经在最后一个位置时,此操作将自动隐藏。
MoveOrderUpAction
MoveOrderUpAction
内联操作将给定模型向上移动一个位置。
当模型已经在第一个位置时,此操作将自动隐藏。
MoveToStartAction
MoveToStartAction
内联操作将给定模型移动到第一个位置。
当模型已经在第一个位置时,此操作将自动隐藏。
定义自定义可见性
默认情况下,所有具有Laravel Nova访问权限的用户将能够看到所有包含的排序操作。
如果您想限制某些用户的可见性,您可以定义一个自定义的CanSeeSortableAction
可调用类。
以下是一个检查用户权限的示例类
use Laravel\Nova\Http\Requests\NovaRequest; class CanSeeSortableAction { public function __invoke(NovaRequest $request): bool { return $request->user()->can('sort_models'); } }
完成后,您只需在config/nova-eloquent-sortable.php
下的can_see_sortable_action
属性中引用您的自定义类即可
'can_see_sortable_action' => \Path\To\CanSeeSortableAction::class,
定义自定义运行权限
默认情况下,所有具有Laravel Nova访问权限的用户将能够运行所有包含的排序操作。
如果您想限制某些用户的权限,您可以定义一个自定义的CanRunSortableAction
可调用类。
以下是一个检查用户权限的示例类
use Illuminate\Database\Eloquent\Model; use Laravel\Nova\Http\Requests\NovaRequest; class CanRunSortableAction { public function __invoke(NovaRequest $request, Model $model): bool { return $request->user()->can('sort_model', $model); } }
完成后,您只需在config/nova-eloquent-sortable.php
下的can_run_sortable_action
属性中引用您的自定义类即可
'can_run_sortable_action' => \Path\To\CanRunSortableAction::class,
测试
composer test
变更日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全漏洞
请参阅我们的安全策略了解如何报告安全漏洞。
鸣谢
许可
MIT许可(MIT)。请参阅许可文件以获取更多信息。