"Enter"a basıp içeriğe geçin

Laravel Filament ile Task Management App Oluşturma

İçindekiler

Giriş

Laravel Filament, Laravel uygulamalarınız için hızlı ve şık admin panelleri oluşturmanıza olanak tanıyan güçlü bir araçtır. Bu yazıda, Laravel Filament kullanarak basit bir Task Management uygulaması oluşturacağız.

Laravel Filament Nedir?

Laravel Filament, Laravel ekosistemi için geliştirilmiş bir admin panel oluşturma aracıdır. TALL stack (Tailwind CSS, Alpine.js, Laravel, Livewire) üzerine inşa edilmiştir ve hızlı bir şekilde profesyonel görünümlü admin panelleri oluşturmanıza olanak tanır.

Kurulum

İlk olarak, yeni bir Laravel projesi oluşturun ve Filament’i kurun:

composer create-project laravel/laravel task-management
cd task-management
composer require filament/filament:"^3.0-stable" -W
php artisan filament:install --panels

Filament kurulduktan sonra user oluşturun.

php artisan make:filament-user

Task Management App Oluşturma

Model Oluşturma

İlk adım olarak, Task modelimizi oluşturalım:

php artisan make:model Task -m

Migration Oluşturma

Oluşturulan migration dosyasını düzenleyelim:

public function up()
{
    Schema::create('tasks', function (Blueprint $table) {
        $table->id();
        $table->string('title');
        $table->text('description')->nullable();
        $table->enum('status', ['todo', 'in_progress', 'done'])->default('todo');
        $table->date('due_date')->nullable();
        $table->timestamps();
    });
}

Migration’ı çalıştıralım:

php artisan migrate

Resource Oluşturma

Şimdi Task resource’umuzu oluşturalım:

php artisan make:filament-resource Task

Form Oluşturma

app/Filament/Resources/TaskResource.php dosyasında form metodunu düzenleyelim:

public static function form(Form $form): Form
{
    return $form
        ->schema([
            Forms\Components\TextInput::make('title')
                ->required()
                ->maxLength(255),
            Forms\Components\Textarea::make('description')
                ->maxLength(65535)
                ->columnSpanFull(),
            Forms\Components\Select::make('status')
                ->options([
                    'todo' => 'To Do',
                    'in_progress' => 'In Progress',
                    'done' => 'Done',
                ])
                ->required(),
            Forms\Components\DatePicker::make('due_date'),
        ]);
}

Table Oluşturma

Aynı dosyada table metodunu düzenleyelim:

public static function table(Table $table): Table
{
    return $table
        ->columns([
            Tables\Columns\TextColumn::make('title')
                ->searchable(),
            Tables\Columns\TextColumn::make('status')
                ->searchable(),
            Tables\Columns\TextColumn::make('due_date')
                ->date()
                ->sortable(),
            Tables\Columns\TextColumn::make('created_at')
                ->dateTime()
                ->sortable()
                ->toggleable(isToggledHiddenByDefault: true),
            Tables\Columns\TextColumn::make('updated_at')
                ->dateTime()
                ->sortable()
                ->toggleable(isToggledHiddenByDefault: true),
        ])
        ->filters([
            Tables\Filters\SelectFilter::make('status')
                ->options([
                    'todo' => 'To Do',
                    'in_progress' => 'In Progress',
                    'done' => 'Done',
                ]),
        ])
        ->actions([
            Tables\Actions\EditAction::make(),
        ])
        ->bulkActions([
            Tables\Actions\BulkActionGroup::make([
                Tables\Actions\DeleteBulkAction::make(),
            ]),
        ]);
}

Özelleştirmeler

Filament’i daha da özelleştirmek için şunları yapabilirsiniz:

  1. Özel aksiyonlar eklemek
  2. Widgets oluşturmak
  3. Yetkilendirme kuralları eklemek
  4. Tema ve stil özelleştirmeleri yapmak

Örnek olarak, tamamlanan görevleri silmek için özel bir aksiyon ekleyelim:

use Filament\Tables\Actions\Action;

// Table metoduna ekleyin
->actions([
    Tables\Actions\EditAction::make(),
    Action::make('delete_completed')
        ->label('Delete Completed')
        ->icon('heroicon-o-trash')
        ->requiresConfirmation()
        ->hidden(fn (Task $record): bool => $record->status !== 'done')
        ->action(fn (Task $record) => $record->delete())
])

Sonuç

Bu yazıda, Laravel Filament kullanarak basit bir Task Management uygulaması oluşturduk. Filament’in sunduğu güçlü özellikler sayesinde, kısa sürede profesyonel görünümlü bir admin paneli oluşturabildik. Siz de kendi projelerinizde Filament’i kullanarak geliştirme sürecinizi hızlandırabilir ve kullanıcı dostu arayüzler oluşturabilirsiniz.

Laravel Filament hakkında daha fazla bilgi için resmi dokümantasyonu inceleyebilirsiniz.

İlk Yorumu Siz Yapın

    Bir yanıt yazın

    E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

    Powered by ERU.