Product Resource: Menu, Simple Table and Forms

Product Resource: Menu, Simple Table and Forms

2024-11-21 وقت القراءه : 2 دقائق

الـ core functionality في filament هو Resource فهي تستخدم للتعامل مع Model معين في لارافيل.

هنا لأننا نريد التعامل مع Product Model بالتالي يجب علينا إنشاء filament-resource ومن ثم تمرير إسم الموديل، وفي هذه المثال سوف نستخدم Product

php artisan make:filament-resource Product

   INFO  Filament resource [app/Filament/Resources/ProductResource.php] created successfully.  


بعد تنفيذ الأمر سيتم إنشاء ما يلي

في المسار app/Filament/Resource سيتم إنشاء ProductResource.php وكذلك سيتم إنشاء مجلد بإسم الموديل وهنا هو ProductResource ويحتوي على مجلد Pages وبداخله الصفحات التي سيتم عرضها او سيتعامل معها المستخدم وهي create,edit,list


كذلك يجب علينا إنشاء Product Model و migration

 php artisan make:model Product -m         
public function up(): void
{
    Schema::create('products', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('slug')->nullable();
        $table->integer('price');
        $table->boolean('is_active')->default(true);
        $table->string('image')->nullable();
        $table->timestamps();
    });
}
 php artisan migrate


الأن لو توجهنا إلى لوحة التحكم سنجد أنه تم إضافة Product  في الـ menu الجانبيه، وعند الضغط عليها سيتم عرض صفحة list products


عرض البيانات في filament

لعرض البيانات مثلا لفرض إننا نريد إظهار الإسم والسعر، هنا يجب الذهاب ProductResource وبداخل الدالة $table بداخل columns نقوم بتحديد الحقول التي نريد إرجاعها

public static function table(Table $table): Table
{
    return $table
        ->columns([
            Tables\Columns\TextColumn::make('name'),
            Tables\Columns\TextColumn::make('price'),
        ])
        ->filters([
            //
        ])
        ->actions([
            Tables\Actions\EditAction::make(),
        ])
        ->bulkActions([
            Tables\Actions\BulkActionGroup::make([
                Tables\Actions\DeleteBulkAction::make(),
            ]),
        ]);
}

الأن لو ذهبنا إلى لوحة التحكم إلى Product tab ستظهر لنا المنتجات


إضافة البيانات وإنشاء Forms في filament

لإضافة البيانات ، نحتاج لإنشاء form ولذلك يجب الذهاب إلى ProductResource.php وبداخل الدالة form بداخل schema نقوم بتحديد الحقول التي نحتاجها 

public static function form(Form $form): Form
{
    return $form
        ->schema([
            Forms\Components\TextInput::make('name')
                ->required()
                ->maxLength(255),
            Forms\Components\TextInput::make('price')
                ->required(),
        ]);
}

الأن لو ذهبنا إلى إضافة منتج أو تعديل منتج ستظهر لنا هذه الـ form

مع الإنتباه أنه عند عملية الحفظ أو التعديل فإنه لا يتم توجيه المستخدم لصفحة index بل يبقى في نفس الصفحة.

إضافة تعليق
Loading...