Filament:TALL Stack 管理面板
发布时间:作者: Dan Harrin
Filament 是为 Laravel 工匠打造的优雅 TALL Stack 管理面板。V1 已经开发了一年多,我们很高兴发布它!
管理面板以纯 Livewire 组件为基础,并拥有强大的表单和表格构建器,高度依赖 Alpine.js。UI 是使用 Tailwind CSS v2 构建的自定义设计。
设置
安装很简单
composer require filament/filamentphp artisan migrate
通过运行以下命令创建管理面板的用户帐户
php artisan make:filament-user
并回答输入提示。
创建资源
资源与您的应用中的 Eloquent 模型相关联。要为 App\Models\Customer
模型创建资源
php artisan make:filament-resource Customer
这将在 app/Filament/Resources
目录中创建几个文件
.+-- CustomerResource.php+-- CustomerResource| +-- Pages| | +-- CreateCustomer.php| | +-- EditCustomer.php| | +-- ListCustomers.php
新的资源类位于 CustomerResource.php
中。资源类注册与该模型关联的表单、表格、授权设置和页面。
Pages
目录中的类用于自定义管理面板中与您的资源交互的页面。
构建表单
Filament 带有强大的表单构建器,可用于在管理面板中创建直观、动态和上下文感知的表单。
表单具有模式,该模式是一个包含许多表单组件的数组。让我们为 CustomerResource
定义一个表单模式
use Filament\Resources\Forms\Components;use Filament\Resources\Forms\Form; public static function form(Form $form){ return $form ->schema([ Components\TextInput::make('name')->autofocus()->required(), Components\TextInput::make('email')->email()->required(), Components\Select::make('type') ->placeholder('Select a type') ->options([ 'individual' => 'Individual', 'organization' => 'Organization', ]), Components\DatePicker::make('birthday'), ]) ->columns(2);}
有关构建表单的更多信息,请参见 文档。
构建表格
Filament 包含一个表格构建器,可用于在管理面板中创建交互式表格。
表格具有列和过滤器,它们在表格对象的两个方法中定义。让我们为 CustomerResource
构建一个表格
use Filament\Resources\Tables\Columns;use Filament\Resources\Tables\Filter;use Filament\Resources\Tables\Table; public static function table(Table $table){ return $table ->columns([ Columns\Text::make('name')->primary(), Columns\Text::make('email')->url(fn ($customer) => "mailto:{$customer->email}"), Columns\Text::make('type') ->options([ 'individual' => 'Individual', 'organization' => 'Organization', ]), Columns\Text::make('birthday')->date(), ]) ->filters([ Filter::make('individuals', fn ($query) => $query->where('type', 'individual')), Filter::make('organizations', fn ($query) => $query->where('type', 'organization')), ]);}
有关表格构建器的更多信息,请参见 文档。
总结
有关 Filament 项目的更多信息,请访问 我们的网站。我们很想了解您将如何使用它,并希望收到任何建议 - 在 Twitter 上给我们留言 @danjharrin 或 @ryanscherler