uocnv/orchid-action

Orchid 的授权操作

1.0.3 2023-12-27 10:26 UTC

This package is auto-updated.

Last update: 2024-09-27 12:13:42 UTC


README

为 Orchid 的列表面板添加了具有权限的操作按钮

安装

您可以通过 composer 安装此包

composer require uocnv/orchid-action

用法

创建一个操作

php artisan orchid-action:make CustomAction

默认情况下,所有操作都放置在 app/Actions/Orchid 目录中。操作必须由两个方法和权限组成。方法按钮定义名称、图标、对话框等。处理方法直接处理操作。

namespace App\Actions\Orchid;

use Illuminate\Http\Request;
use Orchid\Screen\Actions\Button;
use Orchid\Support\Facades\Toast;
use Uocnv\OrchidAction\Action;

class CustomAction extends Action
{
    protected string $permission = 'action.custom';

    /**
     * The button of the action.
     *
     * @return Button
     */
    public function button(): Button
    {
        return Button::make('Run Custom Action')->icon('bs.fire');
    }

    /**
     * Perform the action on the given models.
     *
     * @param Request $request
     */
    public function handle(Request $request)
    {
        Toast::message('It worked!');
    }
}

handle 方法中,您可以执行完成操作所需的任何任务。

然后在布局中添加操作以使用

...
TD::make('Action')
    ->alignCenter()
    ->render(function (User $user) {
        return ActiveUser::init([
            'userId' => $user->use_id,
            'type'   => ActiveStatus::INACTIVE
        ])?->cansee(!is_null($user->deleted_at));
    })
...

在屏幕中必须使用 Actionable 特性

namespace App\Http\Controllers\Screens;

use Illuminate\Http\Request;
use Orchid\Screen\Screen;
use Uocnv\OrchidAction\Traits\Actionable;

class Idea extends Screen
{
    use Actionable;
    
    /**
     * Fetch data to be displayed on the screen.
     *
     * @return array
     */
    public function query() : array
    {
        return [];
    }

    /**
     * The name of the screen is displayed in the header.
     *
     * @return string|null
     */
    public function name(): ?string
    {
        return "Idea Screen";
    }

    /**
     * The screen's layout elements.
     *
     * @return \Orchid\Screen\Layout[]|string[]
     */
    public function layout() : array
    {
        return [];
    }
}

变更日志

请参阅 CHANGELOG 了解最近的变化信息。

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全

如果您发现任何安全相关的问题,请通过电子邮件 uocnv.soict.hust@gmail.com 联系,而不是使用问题跟踪器。

鸣谢

许可证

MIT 许可证 (MIT)。请参阅 许可证文件 了解更多信息。

Laravel 包模板

此包是使用 Laravel 包模板 生成的。