ryangjchandler / filament-tools
将通用工具页面添加到您的 Filament 项目中。
Requires
- php: ^8.0
- filament/filament: ^2.0
- illuminate/contracts: ^9.0
- spatie/laravel-package-tools: ^1.9.2
Requires (Dev)
- nunomaduro/collision: ^6.0
- nunomaduro/larastan: ^2.0
- orchestra/testbench: ^7.0
- pestphp/pest: ^1.21
- pestphp/pest-plugin-laravel: ^1.1
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
- spatie/laravel-ray: ^1.26
This package is auto-updated.
Last update: 2023-09-03 08:32:59 UTC
README
安装
您可以通过 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)。请参阅许可证文件获取更多信息。