msouto/ nova-sortable
这个Laravel Nova包允许您通过拖拽在Nova资源索引视图中重新排列模型。
资助包维护!
optimistdigital
Requires
- php: >=7.3.0
- laravel/nova: ^3.0
- optimistdigital/nova-translations-loader: ^2.0.0
- spatie/eloquent-sortable: ^3.10.0|^4.0
- dev-master
- 2.4.5
- 2.4.1
- 2.4.0
- 2.3.4
- 2.3.3
- 2.3.2
- 2.3.1
- 2.3.0
- 2.2.0
- 2.1.7
- 2.1.6
- 2.1.5
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.0
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.0
- 1.4.17
- 1.4.16
- 1.4.15
- 1.4.14
- 1.4.13
- 1.4.12
- 1.4.11
- 1.4.10
- 1.4.9
- 1.4.8
- 1.4.7
- 1.4.6
- 1.4.5
- 1.4.4
- 1.4.3
- 1.4.2
- 1.4.1
- 1.4.0
- 1.3.1
- 1.3.0
- 1.2.0
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.1
- 1.0.0
This package is auto-updated.
Last update: 2024-09-29 06:09:00 UTC
README
- 拖拽排序(在索引视图或HasMany视图中)
- BelongsTo/MorphsTo排序支持与连接表
- 移动到开始和结束箭头(使项目成为第一个/最后一个)
- 一切来自 eloquent-sortable
- 本地化
屏幕截图
安装
使用Composer在Laravel Nova项目中安装此包
# Install package
composer require msouto/nova-sortable
使用方法
创建迁移
使用Laravel迁移在模型中添加一个排序字段
// Add order column to the model Schema::table('some_model', function (Blueprint $table) { $table->integer('sort_order'); }); // Set default sort order (just copy ID to sort order) DB::statement('UPDATE some_model SET sort_order = id');
实现eloquent-sortable
实现Spatie的eloquent-sortable接口并应用特性
use Spatie\EloquentSortable\Sortable; use Spatie\EloquentSortable\SortableTrait; class SomeModel extends Eloquent implements Sortable { use SortableTrait; public $sortable = [ 'order_column_name' => 'sort_order', 'sort_when_creating' => true, ]; ... }
当模型没有排序配置时,将使用默认的eloquent-sortable配置。
将HasSortableRows应用到Nova资源上
在资源上应用此包中的HasSortableRows特性
use Msouto\NovaSortable\Traits\HasSortableRows; class MyResource extends Resource { use HasSortableRows; ... }
注意!这会覆盖indexQuery()方法。
按请求/资源禁用排序
您可以通过覆盖资源方法中的canSort()来禁用按请求或按资源排序
public static function canSort(NovaRequest $request, $resource) { // Do whatever here, ie: // return user()->isAdmin(); // return $resource->id !== 5; return true; }
自定义可排序选项
Nova排序顺序
要在Nova中按不同的顺序排序资源,您可以将$sortable数组中的nova_order_by标志设置为DESC(默认为ASC)。
class SomeModel extends Eloquent implements Sortable { use SortableTrait; public $sortable = [ 'order_column_name' => 'sort_order', 'sort_when_creating' => true, 'nova_order_by' => 'DESC', ]; ... }
忽略策略
如果您有一个资源,其authorizedToUpdate为false,但您希望用户仍然能够对其进行排序,则可以使用ignore_policies标志
class SomeModel extends Eloquent implements Sortable { use SortableTrait; public $sortable = [ 'order_column_name' => 'sort_order', 'sort_when_creating' => true, 'ignore_policies' => true, ]; ... }
在HasMany关系上排序
注意! 资源只能在 索引视图 或 HasMany列表视图 中进行排序,但不能同时进行排序!
在HasMany上排序很简单。在模型的$sortable数组中添加'sort_on_has_many' => true。
public $sortable = [ 'order_column_name' => 'sort_order', 'sort_when_creating' => true, 'sort_on_has_many' => true, ];
排序的HasMany配置可以在每个模型的基础上应用,也可以在eloquent-sortable配置中为所有模型添加。
return [ // Spatie sortable configuration /** * Add sort on has many in all the models. **/ 'sort_on_has_many' => true, ];
在ManyToMany关系上排序
在BelongsToMany和MorphToMany关系上排序是可用的,但需要特殊步骤。
请在此处查看文档:排序ManyToMany关系(使用连接表).
本地化
可以使用以下发布命令发布翻译文件
php artisan vendor:publish --provider="OptimistDigital\NovaSortable\ToolServiceProvider" --tag="translations"
您可以将翻译添加到resources/lang/vendor/nova-sortable/,通过创建一个以区域名称命名的新翻译文件(例如et.json)并将JSON从现有的en.json复制过来。
鸣谢
许可证
Nova Sortable是开源软件,使用MIT许可证授权。
