1. Home
  2. Laravel
  3. Basic
  4. ৭। Laravel Filament Admin Panel CRUD Tutorial – বাংলায়

৭। Laravel Filament Admin Panel CRUD Tutorial – বাংলায়

অসাধারণ সিদ্ধান্ত! আমি তোমাকে এখন একটি সম্পূর্ণ, প্রফেশনাল-লেভেলের Filament Admin Panel টিউটোরিয়াল দেব — যা শুরু হবে ইনস্টলেশন থেকে, এবং ধাপে ধাপে যাবে advanced CRUD কাস্টমাইজেশন, UI কনফিগারেশন, relation handling, form improvements, security & role system, সবকিছু বাংলায় ব্যাখ্যা সহ।


🎓 সম্পূর্ণ Filament Admin Panel টিউটোরিয়াল (Laravel 10, Filament 2.x, PHP 8.0 Compatible)


🔰 পর্ব ১: Filament ইনস্টলেশন ও বেসিক কনফিগারেশন

✅ Laravel Project প্রস্তুতি:

composer create-project laravel/laravel filament-project
cd filament-project

✅ Filament v2 ইন্সটল (PHP 8.0 সমর্থিত):

composer require filament/filament:"^2.17"

✅ Filament Panel ইনস্টল:

php artisan filament:install

✅ Admin User তৈরি:

php artisan make:filament-user

➡️ তারপর লগইন করো: http://localhost:8000/admin


📦 পর্ব ২: Resource & CRUD তৈরি (Category Example)

✅ Category মডেল ও মাইগ্রেশন:

php artisan make:model Category -m
Schema::create('categories', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->string('slug')->unique();
    $table->timestamps();
});
php artisan migrate

✅ Filament Resource তৈরি:

php artisan make:filament-resource Category

🛠️ পর্ব ৩: CategoryResource Customize

form() method:

use Filament\Forms\Components\TextInput;

public static function form(Form $form): Form
{
    return $form->schema([
        TextInput::make('name')->required()->live(onBlur: true)
            ->afterStateUpdated(fn($state, callable $set) => $set('slug', \Str::slug($state))),
        TextInput::make('slug')->required()->unique(ignoreRecord: true),
    ]);
}

table() method:

use Filament\Tables\Columns\TextColumn;

public static function table(Table $table): Table
{
    return $table->columns([
        TextColumn::make('name')->sortable()->searchable(),
        TextColumn::make('slug'),
        TextColumn::make('created_at')->date(),
    ]);
}

📂 পর্ব ৪: আরও Resource বানানো (Brand, Tag, Product)

✅ Brand & Tag CRUD:

php artisan make:model Brand -m
php artisan make:model Tag -m
php artisan migrate

php artisan make:filament-resource Brand
php artisan make:filament-resource Tag

➡️ nameslug ফিল্ড একইভাবে add করো।


🧩 পর্ব ৫: Product CRUD + Relationships

✅ মডেল তৈরি:

php artisan make:model Product -m
Schema::create('products', function (Blueprint $table) {
    $table->id();
    $table->foreignId('category_id')->constrained()->onDelete('cascade');
    $table->foreignId('brand_id')->constrained()->onDelete('cascade');
    $table->string('name');
    $table->string('slug')->unique();
    $table->decimal('price', 10, 2);
    $table->timestamps();
});
php artisan migrate
php artisan make:filament-resource Product

✅ ProductResource Form:

use Filament\Forms\Components\{TextInput, Select, Toggle};

public static function form(Form $form): Form
{
    return $form->schema([
        TextInput::make('name')->required()->live(onBlur: true)
            ->afterStateUpdated(fn($state, callable $set) => $set('slug', \Str::slug($state))),
        TextInput::make('slug')->required()->unique(ignoreRecord: true),
        Select::make('category_id')->relationship('category', 'name')->required(),
        Select::make('brand_id')->relationship('brand', 'name')->required(),
        TextInput::make('price')->numeric()->required(),
    ]);
}

🖼️ পর্ব ৬: Image Upload এবং Product Gallery (Spatie Media Library)

➡️ পরে আমি এটাও দেখাবো:

  • ইমেজ আপলোড
  • প্রোডাক্ট গ্যালারি
  • HasMediaTrait ব্যবহার

🔐 পর্ব ৭: Roles & Permissions (Spatie + Filament Shield)

composer require spatie/laravel-permission
php artisan vendor:publish --tag="permission-config"
php artisan migrate

✅ Filament Shield ব্যবহার করে auto permission system:

composer require bezhansalleh/filament-shield
php artisan shield:install

➡️ User Role তৈরি করে admin / manager আলাদা করতে পারবে।


🧠 পর্ব ৮: Advanced Customization

  • Custom Action button (e.g. Approve, Mark Featured)
  • Live Search
  • Custom Layout
  • Filament Widgets (e.g. Product Count, Revenue Card)
  • Relation Manager (Product → Variant management)

📊 পর্ব ৯: Dashboard Widget যুক্ত করা

php artisan make:filament-widget ProductStats
public function render(): View
{
    return view('filament.widgets.product-stats', [
        'total' => Product::count(),
    ]);
}

🧾 পর্ব ১০: Deployment এবং Security

  • Production cache (config, route)
  • Admin panel protection
  • Validation, authorization policies
  • php artisan optimize

📚 সম্পূর্ণ সিলেবাস সারসংক্ষেপ:

অংশবিষয়সমূহ
InstallationFilament v2 + Laravel 10 + PHP 8.0
Basic CRUDCategory, Brand, Tag, Product
RelationshipsbelongsTo, belongsToMany, hasMany
CustomizationLive Slug, Toggle, Unique validation
Image UploadProduct gallery with Spatie
Role & PermissionSpatie + Shield
DashboardWidget, Count box, Charts
Deployment & SecurityCache, optimize, role guard

🔔 তুমি চাইলে আমি এই সিলেবাস অনুযায়ী পর্বভিত্তিক টিউটোরিয়াল করে দিতে পারি — প্রতিটি পর্ব বাংলায় বিস্তারিত করে!
তুমি এখন বলো: কোন পর্ব দিয়ে শুরু করবো?
(উদাহরণ: Role System? Product Image Upload? Dashboard Widget?)

How can we help?