ryangjchandler/filament-tools

该包已被弃用且不再维护。没有建议的替代包。

将通用工具页面添加到您的 Filament 项目中。

v0.4.1 2022-04-25 11:18 UTC

README

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

Screenshot of Page

安装

您可以通过 Composer 安装该包

composer require ryangjchandler/filament-tools

可选,您可以使用以下方式发布视图

php artisan vendor:publish --tag="filament-tools-views"

使用方法

该包将在您的 Filament 控制面板中自动注册一个新的 RyanChandler\FilamentTools\Tools 页面。

注册新工具

您可以通过调用 Tools::register() 函数并传入一个 Closure 作为唯一参数来注册一个新工具。

use RyanChandler\FilamentTools\Tools;
use RyanChandler\FilamentTools\Tool;

public function boot()
{
    Tools::register(function (Tool $tool): Tool {
        return $tool->label('Clear Cache');
    });
}

所有工具都需要一个标签。如果没有提供标签,将会抛出一个 RyanChandler\FilamentTools\Exception\ToolsException 实例。

提供的 Closure 将通过容器执行,因此您可以类型提示所需的任何依赖项。

工具表单

每个工具可以包含它自己的唯一表单。该表单使得从用户处获取输入并基于该输入执行逻辑变得简单。您可以将您表单的模式提供给 Tool::schema() 方法。

Tools::register(function (Tool $tool): Tool {
    return $tool
        ->label('Clear Cache')
        ->schema([
            TextInput::make('tag')
                ->nullable(),
        ]);
});

要提交表单时执行一些逻辑,您可以使用 Tool::onSubmit() 方法,并提供一个 Closure 作为唯一参数。此 Closure 将接收一个 RyanChandler\FilamentTools\ToolInput 实例。该类扩展了 Illuminate\Support\Collection,因此您可以自由地调用任何现有的 Collection 方法。

Tools::register(function (Tool $tool): Tool {
    return $tool
        ->label('Clear Cache')
        ->schema([
            TextInput::make('tag')
                ->nullable(),
        ])
        ->onSubmit(function (ToolInput $input) {
            $tag = $input->get('tag');

            // Do something cool here...
        });
});

提交时清除表单数据

默认情况下,工具表单的状态将在提交之间保留。

如果您想清除数据,可以从提交回调中调用 ToolInput::clear() 方法。

$tool->onSubmit(function (ToolInput $input) {
    // Do something with input here...

    $input->clear();
    $input->notify('Success!');
});

渲染自定义视图

您可以通过调用 Tool::view() 方法在工具内渲染自定义视图。

Tools::register(function (Tool $tool): Tool {
    return $tool
        ->label('Clear Cache')
        ->view('tools.clear-cache');
});

自定义列宽

工具页面上的每行都在 12 列网格上操作。工具的默认宽度为 3 列

如果您想自定义工具的宽度,可以使用 Tool::columnSpan() 方法。

Tools::register(function (Tool $tool): Tool {
    return $tool
        ->label('Clear Cache')
        ->columnSpan(6);
});

授权

默认情况下,所有用户都将能够访问工具页面。如果您想自定义此行为并限制对某些用户的访问,可以使用 Tools::can() 方法。

public function boot()
{
    Tools::can(function (User $user): bool {
        return $user->role === Role::Admin;
    });
}

如果此回调返回 false,则导航项将不会被注册,并且尝试直接访问路由的任何人都将收到 403 响应。

测试

composer test

变更日志

请参阅变更日志获取最近更改的详细信息。

贡献

请参阅贡献指南获取详细信息。

安全漏洞

请查阅我们的安全策略了解如何报告安全漏洞。

鸣谢

许可证

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