Posted on: November 16, 2023 04:17 PM
Posted by: Renato
Categories: Laravel Filament Dicas LaravelFilament
Views: 1199
Filament é o TALLkit elegante para artesãos Laravel.
Se você não está familiarizado com Filament PHP, é um poderoso kit de ferramentas de código aberto desenvolvido para Laravel, projetado para tornar a administração de seus aplicativos Laravel o mais simples e eficaz possível. Este projeto elimina efetivamente a complexidade de criar interfaces administrativas bonitas e responsivas para seus aplicativos Laravel, permitindo que os desenvolvedores se concentrem no que fazem de melhor - criar experiências de usuário fantásticas e escrever código limpo e de fácil manutenção.
Principais características do Laravel Filamento PHP
Componentes elegantes de interface do usuário: Filament PHP oferece uma ampla biblioteca de componentes de interface do usuário pré-construídos, que são esteticamente agradáveis e totalmente responsivos. Essa característica robusta permite que os desenvolvedores criem painéis e painéis administrativos sofisticados de maneira rápida e eficiente.
Manipulação de formulários sem esforço: Com Filament PHP, você pode facilmente lidar com envios de formulários complexos com suporte para todos os tipos de entrada HTML, uploads de arquivos e dados de array. A validação também é feita sem esforço graças ao sistema de validação do Laravel.
Gerenciamento poderoso de recursos (assets): Filament PHP fornece as ferramentas necessárias para criar, ler, atualizar e excluir (CRUD) recursos em seu aplicativo Laravel. Além disso, permite uma fácil personalização para atender a necessidades específicas.
Integração perfeita com Laravel: Filament PHP funciona harmoniosamente com Laravel, proporcionando uma experiência e integração perfeitas para desenvolvedores já familiarizados com o ecossistema Laravel.
Arquitetura Extensível: Este projeto também suporta a extensão de suas funcionalidades por meio do uso de componentes de formulário personalizados, ações, filtros e registros de recursos. O céu é o limite quando se trata de personalização.
Simplificando, o Filament PHP é a ferramenta perfeita para desenvolvedores que procuram simplificar o processo de criação, gerenciamento e personalização de suas interfaces administrativas em aplicativos Laravel. Seu compromisso com o design intuitivo e a fácil integração posiciona o Filament PHP como um favorito entre os desenvolvedores do Laravel, permitindo que eles criem interfaces administrativas verdadeiramente impressionantes e eficientes.
Filament requires the following to run:
- PHP 8.1+
- Laravel v10.0+
- Livewire v3.0+
Livewire v3 is recently released!
The Livewire team have done a great job in making it stable, but it was a complete rewrite of Livewire v2. You may encounter issues, so we recommend testing your application thoroughly before using Filament v3 in production.
...
Step 1: Install Laravel & Connect Database
Installing a fresh new laravel 9 application, so head over to the terminal, type the command, and create a new laravel app.
composer create-project laravel/laravel crud
Now, you have to connect the laravel app to the database, hence open the .env configuration file and add the database credentials as suggested below.
.env
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=database_name DB_USERNAME=database_user_name DB_PASSWORD=database_password
Step 2: Install Laravel Filament
Run below command install filament.
composer require filament/filament:"^2.0"
Create a filament user for admin.
php artisan make:filament-user
Give username, email and password.
Name: > admin Email address: > [email protected] Password: > Success! [email protected] may now log in at http://localhost/admin/login.
Step 3: Login Filament admin
http://localhost:8000/admin/login
Step 4: Create Post Model and Migration
Run below command to create post modal and migration.
php artisan make:model Post -m
create_posts_table.php
public function up() { Schema::create('posts', function (Blueprint $table) { $table->id(); $table->string('title'); $table->string('slug')->unique(); $table->text('content'); $table->text('image')->nullable(); $table->boolean('is_published')->default(false); $table->timestamps(); }); }
App/Modal/Post.php
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Post extends Model { use HasFactory; protected $fillable = [ 'title', 'slug', 'content', 'image', 'is_published' ]; }
run migration
php artisan migrate
Step 5: Create a Post Resource
Run below to command post resource
php artisan make:filament-resource PostResource
Step 6: Create a Post Filament CRUD
Filament/Resources/PostResource.php
<?php namespace App\Filament\Resources; use App\Filament\Resources\PostResource\Pages; use App\Filament\Resources\PostResource\RelationManagers; use App\Models\Post; use Filament\Forms; use Filament\Resources\Form; use Filament\Resources\Resource; use Filament\Resources\Table; use Filament\Tables; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\SoftDeletingScope; use Filament\Forms\Components\TextInput; use Illuminate\Support\Str; use Closure; use Filament\Forms\Components\Card; use Filament\Tables\Columns\TextColumn; use Filament\Forms\Components\Select; use Filament\Forms\Components\RichEditor; use Filament\Forms\Components\Toggle; use Filament\Tables\Columns\BooleanColumn; use Filament\Forms\Components\FileUpload; use Filament\Tables\Columns\ImageColumn; use Filament\Tables\Filters\Filter; use Filament\Tables\Filters\SelectFilter; 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([ Card::make()->schema([ TextInput::make('title') ->reactive() ->afterStateUpdated(function (Closure $set, $state) { $set('slug', Str::slug($state)); })->required(), TextInput::make('slug')->required(), FileUpload::make('image')->image(), RichEditor::make('content')->required(), Toggle::make('is_published') ]) ]); } public static function table(Table $table): Table { return $table ->columns([ TextColumn::make('id')->sortable()->searchable(), TextColumn::make('title')->limit(20)->sortable()->searchable(), TextColumn::make('slug')->limit(50)->sortable()->searchable(), ImageColumn::make('image'), BooleanColumn::make('is_published')->searchable(), ]) ->filters([ // ]) ->actions([ Tables\Actions\EditAction::make(), ]) ->bulkActions([ Tables\Actions\DeleteBulkAction::make(), ]); } public static function getRelations(): array { return [ // ]; } public static function getPages(): array { return [ 'index' => Pages\ListPosts::route('/'), 'create' => Pages\CreatePost::route('/create'), 'edit' => Pages\EditPost::route('/{record}/edit'), ]; } }
Donate to Site
Renato
Developer