Filament
TALL stack üzerine kurulu, zarif ve son derece genişletilebilir admin paneli ve CRUD yönetim aracı.
Kurulum
Composercomposer require filament/filament
Dokümantasyon & Kullanım
MarkdownFilament
Filament, Laravel geliştiricileri için TALL stack (Tailwind CSS, Alpine.js, Laravel ve Livewire) mimarisi üzerine inşa edilmiş, modern, son derece genişletilebilir ve zarif bir açık kaynak yönetim paneli (admin panel), form oluşturucu, tablo yöneticisi ve bildirim ekosistemidir.
Neden Tercih Edilmeli?
- Hızlı CRUD Üretimi: Tek bir Artisan komutu ile tam özellikli, filtreleme, arama ve sayfalama destekli yönetim panelleri kurar.
- TALL Stack Mimarisi: Özel JavaScript veya derleme araçlarına ihtiyaç duymadan saf PHP ve Livewire ile zengin arayüzler geliştirilir.
- Kapsamlı Bileşen Ekosistemi: Form Builder, Table Builder, Notification, Widget ve Actions kütüphanelerini tek çatı altında barındırır.
- Çoklu Panel Desteği: Aynı Laravel uygulamasında hem
/admin, hem/app, hem de/customergibi bağımsız paneller oluşturabilir. - Zengin Topluluk Eklentileri: Grafikler, rol yönetimi, harita entegrasyonları gibi yüzlerce hazır eklenti desteği vardır.
Kurulum
Filament v3 panel paketini Composer ile kurun:
composer require filament/filament:"^3.2" -W
Panel sağlayıcısını yükleyin:
php artisan filament:install --panels
Bu komut app/Providers/Filament/AdminPanelProvider.php dosyasını oluşturur ve /admin rotasını kullanıma açar.
Temel Kullanım
1. Panel Kullanıcısı Oluşturma
php artisan make:filament-user
2. CRUD Kaynağı (Resource) Oluşturma
Örneğin Post modeliniz için tam donanımlı bir yönetim sayfası üretin:
php artisan make:filament-resource Post --generate
Bu komut app/Filament/Resources/PostResource.php dosyasını oluşturur:
namespace App\Filament\Resources;
use App\Filament\Resources\PostResource\Pages;
use App\Models\Post;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
class PostResource extends Resource
{
protected static ?string $model = Post::class;
protected static ?string $navigationIcon = 'heroicon-o-document-text';
public static function form(Form $form): Form
{
return $form
->schema([
Forms\Components\TextInput::make('title')
->required()
->maxLength(255)
->live(onBlur: true)
->afterStateUpdated(fn ($state, callable $set) => $set('slug', \Str::slug($state))),
Forms\Components\TextInput::make('slug')
->required()
->maxLength(255),
Forms\Components\Select::make('category_id')
->relationship('category', 'name')
->searchable()
->preload()
->required(),
Forms\Components\RichEditor::make('content')
->columnSpanFull(),
Forms\Components\Toggle::make('is_published')
->default(false),
]);
}
public static function table(Table $table): Table
{
return $table
->columns([
Tables\Columns\TextColumn::make('title')
->searchable()
->sortable(),
Tables\Columns\TextColumn::make('category.name')
->badge()
->sortable(),
Tables\Columns\IconColumn::make('is_published')
->boolean()
->sortable(),
Tables\Columns\TextColumn::make('created_at')
->dateTime('d.m.Y H:i')
->sortable()
->toggleable(isToggledHiddenByDefault: true),
])
->filters([
Tables\Filters\TernaryFilter::make('is_published'),
])
->actions([
Tables\Actions\EditAction::make(),
Tables\Actions\DeleteAction::make(),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(),
]),
]);
}
public static function getPages(): array
{
return [
'index' => Pages\ListPosts::route('/'),
'create' => Pages\CreatePost::route('/create'),
'edit' => Pages\EditPost::route('/{record}/edit'),
];
}
}
Paket Bilgileri
Etiketler
Diğer Paketler
API oluşturmadan Vue, React veya Svelte bileşenlerini klasik Laravel controller ve view yapısıyla SPA olarak çalıştırmayı sağlayan adaptör.
PHP ve Laravel için popüler, güçlü, esnek görsel işleme, kırpma, filtreleme ve optimizasyon kütüphanesi.
Uygulamanızdaki kullanıcı hareketlerini ve model değişikliklerini otomatik olarak loglayan denetim paketi.