z00f / filament-tools

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

资助包维护!
ryangjchandler

dev-main 2023-06-26 16:48 UTC

This package is auto-updated.

Last update: 2024-09-26 19:37:27 UTC


README

您可以通过 Composer 安装此包。

composer require z00f/filament-tools

可选,您可以使用以下命令发布视图

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

用法

此包将自动在您的 Filament 面板中注册一个新的 z00f\FilamentTools\Tools 页面。

注册新工具

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

use z00f\FilamentTools\Tools;
use z00f\FilamentTools\Tool;

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

所有工具都必须有一个标签。如果没有提供标签,将会抛出一个 z00f\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 将接收一个 z00f\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

变更日志

请参阅 CHANGELOG 了解最近更改的更多信息。

贡献

请参阅 CONTRIBUTING 了解详情。

安全漏洞

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

致谢

许可

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