maize-tech/laravel-nova-eloquent-sortable

Laravel Nova Eloquent Sortable

3.0.1 2023-11-03 10:03 UTC

This package is auto-updated.

Last update: 2024-09-08 13:12:43 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

轻松地为Laravel Nova中的任何资源添加内联可排序操作。

本包基于Spatie的Eloquent Sortable。在进行下一步之前,请务必阅读其文档和安装指南!

Laravel Nova Eloquent Sortable in action

安装

您可以通过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)。请参阅许可文件以获取更多信息。