强烈建议社区的小伙伴一起翻译filamentphp文档,昨天使用了一下,真的很好用!

filamentphp

一个开源的laravel 后台管理

社区相当活跃,使用非常优雅、灵活、随着laravel生态一起成长

使用示例

安装完成后执行:
php artisan make:filament-resource OrderResource 创建资源

强烈建议社区的小伙伴一起翻译filamentphp文档,昨天使用了一下,真的很好用!

生成如上文件,编辑OrderResource.php

<?php

namespace App\Filament\Resources;

use App\Enums\OrderStatusEnum;
use App\Filament\Resources\OrderResource\Pages;
use App\Filament\Resources\OrderResource\RelationManagers;
use App\Models\Order;
use App\Models\Product;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
use pxlrbt\FilamentExcel\Actions\Tables\ExportBulkAction;

class OrderResource extends Resource
{
    protected static ?string $model = Order::class;

    protected static ?string $navigationIcon = 'heroicon-o-shopping-bag';

    protected static ?string $navigationGroup = 'Shop';

    protected static ?int $navigationSort = 3;

    public static function getNavigationBadge(): ?string
    {
        return static::getModel()::where('status', '=', 'processing')->count();
    }

    public static function getNavigationBadgeColor(): string|array|null
    {
        return static::getModel()::where('status', '=', 'processing')->count() > 10 ? 'warning' : 'primary';
    }

    public static function form(Form $form): Form
    {
        return $form
            ->schema([
                Forms\Components\Wizard::make([
                    Forms\Components\Wizard\Step::make('Order Details')->schema([
                        Forms\Components\TextInput::make('number')->default('OR-' . random_int(1000000, 9999999))
                        ->disabled()->dehydrated()->required()->unique(),

                        Forms\Components\Select::make('customer_id')->relationship('customer' ,'name')
                        ->searchable()->required(),

                        Forms\Components\TextInput::make('shipping_price')->label('Shipping Costs')->dehydrated()
                        ->numeric()->required(),

                        Forms\Components\Select::make('type')->options([
                            'pending' => OrderStatusEnum::PENDING->value,
                            'processing' => OrderStatusEnum::PROCESSING->value,
                            'completed' => OrderStatusEnum::COMPLETED->value,
                            'declined' => OrderStatusEnum::DECLINED->value,
                        ])->required(),

                        Forms\Components\MarkdownEditor::make('notes')->columnSpanFull()
                    ])->columns(2),

                    Forms\Components\Wizard\Step::make('Order Items')->schema([
                        Forms\Components\Repeater::make('items')->relationship()->schema([

                            Forms\Components\Select::make('product_id')->label('Product')
                                ->options(Product::query()->pluck('name', 'id'))->required()
                                ->reactive()->afterStateUpdated(fn($state, Forms\Set $set) =>
                                $set('unit_price', Product::find($state)?->price ?? 0)),

                            Forms\Components\TextInput::make('quantity')->numeric()->default(1)->required()
                            ->live()->dehydrated()->integer()->minValue(0),
                            Forms\Components\TextInput::make('unit_price')->label('Unit Price')->required()
                                ->disabled()->dehydrated()->numeric(),

                            Forms\Components\Placeholder::make('total_price')->label('Total Price')
                            ->content(fn($get) => $get('quantity') * $get('unit_price')),
                        ])->columns(4)

                    ])
                ])->columnSpanFull()
            ]);
    }

    public static function table(Table $table): Table
    {
        return $table
            ->columns([
                Tables\Columns\TextColumn::make('number')->searchable()->searchable(),
                Tables\Columns\TextColumn::make('customer.name')->searchable()->searchable()->toggleable(),
                Tables\Columns\TextColumn::make('status')->searchable()->searchable(),
                /*Tables\Columns\TextColumn::make('total_price')->searchable()->searchable()->summarize([
                    Tables\Columns\Summarizers\Sum::make()->money()
                ]),*/
                Tables\Columns\TextColumn::make('created_at')->label('Order Date')->date()
            ])
            ->filters([
                //
            ])
            ->actions([
                Tables\Actions\ActionGroup::make([
                    Tables\Actions\EditAction::make(),
                    Tables\Actions\ViewAction::make(),
                    Tables\Actions\DeleteAction::make(),
                ])
            ])
            ->bulkActions([
                Tables\Actions\BulkActionGroup::make([
                    ExportBulkAction::make(),
                    Tables\Actions\DeleteBulkAction::make(),
                ]),
            ]);
    }

    public static function getRelations(): array
    {
        return [
            //
        ];
    }

    public static function getPages(): array
    {
        return [
            'index' => Pages\ListOrders::route('/'),
            'create' => Pages\CreateOrder::route('/create'),
            'edit' => Pages\EditOrder::route('/{record}/edit'),
        ];
    }    
}

就完成了,可谓相当的好用:

强烈建议社区的小伙伴一起翻译filamentphp文档,昨天使用了一下,真的很好用!

大家一起拾柴可行?

join_jiang
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 34
翟宇鑫

感觉速度慢的离奇 :joy:
开发体验确实不错,比起 laravel-admin 有过之无不及

6个月前 评论
666666 (楼主) 6个月前
哪吒的狗腿子 6个月前
翟宇鑫 (作者) 6个月前

不好用啊 还是配合vue全家桶吧

6个月前 评论
碳技术 6个月前
666666 (楼主) 6个月前
  • 听说过,差不多就是用 PHP 写页面,不用再单纯写 JS ? :smiling_imp:
  • Laravel-Admin 后台的区别在哪里? :hushed:
  • Filament = Laravel + Livewire + Tailwind CSS + Alpine JS ? :cow:
  • 为了中文 Laravel 环境,可以搞个文档,大家一起翻译哇 :bug:
6个月前 评论
Tacks (作者) 6个月前
Ailon 6个月前

真是不错的东西

6个月前 评论
666666 (楼主) 6个月前
陈先生

五天交付了一个项目。Filament + restful :kissing_heart:

6个月前 评论
666666 (楼主) 6个月前

我也用了两个月了,也自己弄过页面,也赞助了一些。

挺好的,怎么说呢?不管是人员帮忙解决问题,或者是更新速度,人员友好程度都不错。

就是不会 Livewire,以及一些高级用法难受一些。还要学习。

6个月前 评论
666666 (楼主) 6个月前

最重要的 插件市场也有的,很多插件确实不错

6个月前 评论
666666 (楼主) 6个月前

www.laravel-filament.cn/docs/zh-CN... 这不是有个中文网吗

6个月前 评论
ltaoo 6个月前
666666 (楼主) 6个月前
666666 (楼主) 6个月前
快乐壮

刚看了看这个东西,是不是没有权限管理啊

6个月前 评论
666666 (楼主) 6个月前

不太会用docker, 系统低版本,如何装PHP8? 我卡在这里

6个月前 评论
666666 (楼主) 6个月前
ErzaQ (作者) 6个月前

有没有交流群

6个月前 评论
666666 (楼主) 6个月前

和 dcat admin 相比怎么样

6个月前 评论
666666 (楼主) 6个月前

你看 laravel-filament.cn 这是啥

6个月前 评论
slowlyo

真不错 我选择更灵活的 Owl Admin ~

doge

6个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!