Heim >Backend-Entwicklung >PHP-Tutorial >Aufbau robuster Admin-Panels mit Filament und Laravel: Eine Schritt-für-Schritt-Anleitung

Aufbau robuster Admin-Panels mit Filament und Laravel: Eine Schritt-für-Schritt-Anleitung

PHPz
PHPzOriginal
2024-09-03 18:32:411383Durchsuche

Building Robust Admin Panels with Filament and Laravel: A Step-by-Step Guide

Laravel ist ein leistungsstarkes PHP-Framework, das eine solide Grundlage für die Entwicklung von Webanwendungen bietet. Filament ist ein elegantes Open-Source-Admin-Panel und Formularersteller für Laravel, das die Erstellung von Admin-Schnittstellen vereinfacht. Dieser Leitfaden führt Sie durch den Aufbau eines robusten Admin-Panels mit den neuesten Versionen von Filament und Laravel.

Laravel SaaS Starter – Starten Sie Ihr nächstes Saas in einem Tag, nicht in Wochen
Starten Sie Ihr nächstes Laravel Saas-Projekt in nur einem Tag, nicht in Wochen! Mit bereits erstellten Funktionen, die jedes SaaS braucht
www.laravelsaas.store

Voraussetzungen
Bevor wir beginnen, stellen Sie sicher, dass auf Ihrem Entwicklungscomputer Folgendes installiert ist:

PHP >= 8.0
Komponist
Node.js und NPM
MySQL oder jede andere von Laravel unterstützte Datenbank

Schritt 1: Einrichten eines neuen Laravel-Projekts

Erstellen Sie zunächst ein neues Laravel-Projekt mit Composer:

composer create-project --prefer-dist laravel/laravel filament-admin
cd filament-admin

Als nächstes richten Sie Ihre Umgebungsvariablen ein. Benennen Sie die Datei .env.example in .env um und aktualisieren Sie die Datenbankkonfiguration mit Ihren Anmeldeinformationen:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=filament_db
DB_USERNAME=root
DB_PASSWORD=your_password

Führen Sie den folgenden Befehl aus, um einen Anwendungsschlüssel zu generieren und die standardmäßigen Laravel-Tabellen zu migrieren:

php artisan key:generate
php artisan migrate

Schritt 2: Filament installieren

Um Filament zu installieren, verwenden Sie Composer:

composer require filament/filament

Veröffentlichen Sie als Nächstes die Filament-Assets und die Konfiguration:

php artisan filament:install

Schritt 3: Authentifizierung einrichten

Filament erfordert eine Authentifizierung, um den Zugriff auf das Admin-Panel zu verwalten. Laravel bietet ein integriertes Authentifizierungsgerüst. Der Einfachheit halber verwenden wir Laravel Breeze:

composer require laravel/breeze --dev
php artisan breeze:install

Folgen Sie den Anweisungen, um Ihre bevorzugte Frontend-Option (Blade, Vue, React) auszuwählen. Für dieses Beispiel verwenden wir Blade:

php artisan migrate
npm install
npm run dev

Stellen Sie sicher, dass Sie einen Benutzer haben, mit dem Sie sich anmelden können. Sie können Laravel Tinker verwenden, um eines zu erstellen:

php artisan tinker

>>> \App\Models\User::factory()->create(['email' => 'admin@example.com']);

Schritt 4: Filament konfigurieren

Aktualisieren Sie das Benutzermodell, um den Filament HasFilamentRoles-Vertrag zu implementieren, wenn Sie Rollen oder Berechtigungen verwenden. Vorerst stellen wir sicher, dass jeder authentifizierte Benutzer auf Filament zugreifen kann.

In app/Providers/FilamentServiceProvider.php, define the authorization logic:

use Filament\Facades\Filament;

public function boot()
{
    Filament::serving(function () {
        Filament::registerUserMenuItems([
            'account' => MenuItem::make()
                ->label('My Account')
                ->url(route('filament.resources.users.edit', ['record' => auth()->user()]))
                ->icon('heroicon-o-user'),
        ]);
    });

    Filament::registerPages([
        // Register your custom pages here
    ]);

    Filament::registerResources([
        // Register your custom resources here
    ]);
}

protected function gate()
{
    Gate::define('viewFilament', function ($user) {
        return in_array($user->email, [
            'admin@example.com',
        ]);
    });
}

Schritt 5: Ressourcen erstellen

Filamentressourcen sind Eloquent-Modelle mit CRUD-Schnittstellen. Erstellen wir eine Ressource zum Verwalten eines Post-Modells.

Generieren Sie das Modell, die Migration und die Fabrik:

php artisan make:model Post -mf

Definieren Sie die Felder in der Migrationsdatei:

public function up()
{
    Schema::create('posts', function (Blueprint $table) {
        $table->id();
        $table->string('title');
        $table->text('content');
        $table->timestamps();
    });
}

Migration ausführen:

php artisan migrate

Als nächstes generieren Sie eine Filamentressource:

php artisan make:filament-resource Post

Dieser Befehl erstellt die notwendigen Dateien für die Ressource. Öffnen Sie app/Filament/Resources/PostResource.php und definieren Sie die Ressourcenfelder:

use Filament\Resources\Pages\Page;
use Filament\Resources\Pages\CreateRecord;
use Filament\Resources\Pages\EditRecord;
use Filament\Resources\Pages\ListRecords;
use Filament\Resources\Forms;
use Filament\Resources\Tables;
use Filament\Resources\Forms\Components\TextInput;
use Filament\Resources\Forms\Components\Textarea;
use Filament\Resources\Tables\Columns\TextColumn;

class PostResource extends Resource
{
    protected static ?string $model = Post::class;

    protected static ?string $navigationIcon = 'heroicon-o-collection';

    public static function form(Form $form): Form
    {
        return $form
            ->schema([
                TextInput::make('title')
                    ->required()
                    ->maxLength(255),
                Textarea::make('content')
                    ->required(),
            ]);
    }

    public static function table(Table $table): Table
    {
        return $table
            ->columns([
                TextColumn::make('title'),
                TextColumn::make('content')
                    ->limit(50),
                TextColumn::make('created_at')
                    ->dateTime(),
            ]);
    }

    public static function getPages(): array
    {
        return [
            'index' => Pages\ListRecords::route('/'),
            'create' => Pages\CreateRecord::route('/create'),
            'edit' => Pages\EditRecord::route('/{record}/edit'),
        ];
    }
}

Schritt 6: Navigation hinzufügen

Fügen Sie die Ressource zur Filament-Seitenleiste hinzu. Öffnen Sie app/Providers/FilamentServiceProvider.php und registrieren Sie die Ressource:

use App\Filament\Resources\PostResource;

public function register()
{
    Filament::registerResources([
        PostResource::class,
    ]);
}

Schritt 7: Filament anpassen

Filament ist hochgradig anpassbar. Sie können das Thema, die Komponenten und mehr ändern. Um beispielsweise die Primärfarbe anzupassen, aktualisieren Sie die Datei config/filament.php:

'brand' => [
    'primary' => '#1d4ed8',
],

Sie können auch benutzerdefinierte Seiten, Widgets und Formularkomponenten erstellen, indem Sie der Dokumentation folgen: Filament-Dokumentation.

Laravel SaaS Starter – Starten Sie Ihr nächstes SaaS in einem Tag, nicht in Wochen
Starten Sie Ihr nächstes Laravel Saas-Projekt in nur einem Tag, nicht in Wochen! Mit bereits erstellten Funktionen, die jedes SaaS braucht
www.laravelsaas.store

Fazit

In diesem Leitfaden haben wir Schritt für Schritt die Einrichtung eines neuen Laravel-Projekts, die Installation von Filament, das Einrichten der Authentifizierung, das Erstellen von Ressourcen und das Anpassen des Filament-Admin-Panels besprochen. Dies sollte Ihnen eine solide Grundlage für den Aufbau robuster Admin-Panels mit Filament und Laravel bieten. Weitere erweiterte Funktionen und Anpassungen finden Sie in der offiziellen Dokumentation und erkunden Sie die Funktionen von Filament.

Viel Spaß beim Codieren!

Das obige ist der detaillierte Inhalt vonAufbau robuster Admin-Panels mit Filament und Laravel: Eine Schritt-für-Schritt-Anleitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn