Latest Premium Tutorial
-
· 11 mins, 2098 words · premium
Laravel Reverb Demo: Real-Time Notification on Completed Task
Some Laravel tasks are running in the background. What if you want to "listen" for those events to finish? Let's implement exactly this real-time feedback with the Reverb server.
Newest content
-
· 3 mins, 574 words
Filament: Hide Relation Manager by Condition
-
· 3 mins, 522 words
Configure Laravel Reverb in Filament Broadcasting
-
Random Quick Laravel Tip:
Filament: Badge Columns with EnumsIf you have a set of options for radio/dropdowns in the Form, you may want to create a PHP Enum class. It will give you the benefit of re-using the same class and also automatically show colors/icons as a badge.
Before:
ProductResource.php:
public static function form(Form $form): Form{return $form->schema([// ... other fieldsForms\Components\Radio::make('status')->options(['in stock' => 'in stock','sold out' => 'sold out','coming soon' => 'coming soon',]),]);}After:
app/Enums/ProductStatus.php:
namespace App\Enums;use Filament\Support\Contracts\HasIcon;use Filament\Support\Contracts\HasLabel;use Filament\Support\Contracts\HasColor;enum ProductStatus: string implements HasLabel, HasColor, HasIcon{case IN_STOCK = 'in stock';case SOLD_OUT = 'sold out';case COMING_SOON = 'coming soon';public function getLabel(): ?string{return match ($this) {self::IN_STOCK => 'In stock',self::SOLD_OUT => 'Sold out',self::COMING_SOON => 'Coming soon',};}public function getColor(): string|array|null{return match ($this) {self::IN_STOCK => 'success',self::SOLD_OUT => 'warning',self::COMING_SOON => 'gray',};}public function getIcon(): ?string{return match ($this) {self::IN_STOCK => 'heroicon-m-pencil',self::SOLD_OUT => 'heroicon-m-eye',self::COMING_SOON => 'heroicon-m-check',};}}app/Models/Product.php
use App\Enums\ProductStatus;class Product extends Model {// ...protected $casts = ['status' => ProductStatus::class,];}ProductResource.php:
use App\Enums\ProductStatus;public static function form(Form $form): Form{return $form->schema([// ... other fieldsForms\Components\Radio::make('status')->options(ProductStatus::class),]);}It feels like a lot of work, right? But look at those methods
getLabel()
,getColor()
andgetIcon()
. Now, in the Table of the Resource, you can just use thebadge()
method, and Enum will auto-style it for you.public static function table(Table $table): Table{return $table->columns([// ... other columnsTables\Columns\TextColumn::make('status')->badge(),]);} -
· 5 mins, 868 words
Filament: Customize Auth Emails like Reset Password or Verification
-
· 3 mins, 495 words
Filament Table: Modify Base Query by User Role Condition
-
· 4 mins, 672 words
Filament Dependent Dropdowns in Edit Form: Set Select Values
-
Premium Course: Laravel 11 Multi-Tenancy: All You Need To Know
-
· 1 min, 140 words
Filament: Remove Label Text in Resource Form Page
-
· 6 mins, 1068 words
Filament Repeater: Set Values Manually or From Other Fields
-
· 4 mins, 716 words
Filament: Money Columns and Storing Value in Cents
-
· 1 min, 193 words
Laravel Jetstream: Redirect After Login
-
· 1 min, 186 words
Filament Select with Relationship: Custom Label for titleAttribute Options