İçindekiler
- Giriş
- Laravel Filament Nedir?
- Kurulum
- Task Management App Oluşturma
- Model Oluşturma
- Migration Oluşturma
- Resource Oluşturma
- Form Oluşturma
- Table Oluşturma
- Özelleştirmeler
- Sonuç
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:
- Özel aksiyonlar eklemek
- Widgets oluşturmak
- Yetkilendirme kuralları eklemek
- 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