Filament PHP ile Hızlı Admin Panel Geliştirme

z

zafer ak

Yazar

09 November 2025 2 dakika okuma 2 görüntülenme
Filament PHP ile Hızlı Admin Panel Geliştirme
Filament admin panel builder. Resources, forms, tables ve widgets. Laravel TALL stack admin çözümü.

Filament Nedir?

Filament, Laravel için TALL stack (Tailwind, Alpine, Livewire, Laravel) tabanlı admin panel builder'dır. Kod yazmadan güçlü admin paneller oluşturabilirsiniz.

Kurulum

composer require filament/filament

php artisan filament:install --panels

# Admin user oluştur
php artisan make:filament-user

Resource Oluşturma

php artisan make:filament-resource Post

# Dosyalar oluşur:
# app/Filament/Resources/PostResource.php
# app/Filament/Resources/PostResource/Pages/

Form Schema

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

        Forms\Components\Select::make('category_id')
            ->relationship('category', 'name')
            ->searchable()
            ->preload(),

        Forms\Components\RichEditor::make('content')
            ->required()
            ->columnSpanFull(),

        Forms\Components\FileUpload::make('image')
            ->image()
            ->directory('posts'),

        Forms\Components\Toggle::make('is_published')
            ->default(true),

        Forms\Components\DateTimePicker::make('published_at'),
    ]);
}

Table Schema

public static function table(Table $table): Table
{
    return $table
        ->columns([
            Tables\Columns\ImageColumn::make('image'),

            Tables\Columns\TextColumn::make('title')
                ->searchable()
                ->sortable(),

            Tables\Columns\TextColumn::make('category.name')
                ->badge(),

            Tables\Columns\IconColumn::make('is_published')
                ->boolean(),

            Tables\Columns\TextColumn::make('created_at')
                ->dateTime()
                ->sortable(),
        ])
        ->filters([
            Tables\Filters\SelectFilter::make('category')
                ->relationship('category', 'name'),

            Tables\Filters\TernaryFilter::make('is_published'),
        ])
        ->actions([
            Tables\Actions\EditAction::make(),
            Tables\Actions\DeleteAction::make(),
        ])
        ->bulkActions([
            Tables\Actions\DeleteBulkAction::make(),
        ]);
}

Relations

// PostResource.php
public static function getRelations(): array
{
    return [
        RelationManagers\CommentsRelationManager::class,
    ];
}

// CommentsRelationManager
php artisan make:filament-relation-manager PostResource comments title

Widgets

php artisan make:filament-widget StatsOverview

class StatsOverview extends BaseWidget
{
    protected function getStats(): array
    {
        return [
            Stat::make('Total Posts', Post::count()),
            Stat::make('Published', Post::published()->count()),
            Stat::make('Views', Post::sum('views'))
                ->description('Total views')
                ->chart([7, 3, 4, 5, 6, 3, 5]),
        ];
    }
}

Custom Pages

php artisan make:filament-page Settings

class Settings extends Page
{
    protected static ?string $navigationIcon = 'heroicon-o-cog';
    protected static string $view = 'filament.pages.settings';
}

Authorization

// Resource policy
public static function canViewAny(): bool
{
    return auth()->user()->hasRole('admin');
}

public static function canCreate(): bool
{
    return auth()->user()->can('create posts');
}

Sonuç

Filament, Laravel admin panelleri için en hızlı çözümdür. Nova'ya ücretsiz alternatif olarak öne çıkıyor.

İlgili Yazılar