Posted on: November 16, 2023 07:17 PM
Posted by: Renato
Categories: Laravel Filament Dicas LaravelFilament
Views: 1409
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