mrpunyapal/client-validation-filament

Filament integration for Laravel Client Validation: native-field macros, render-time x-validate attributes, and custom validation messages/attributes forwarded to the browser.

Maintainers

Package info

github.com/MrPunyapal/client-validation-filament

pkg:composer/mrpunyapal/client-validation-filament

Transparency log

Statistics

Installs: 1

Dependents: 0

Suggesters: 1

Stars: 0

0.1.1 2026-08-30 20:57 UTC

This package is auto-updated.

Last update: 2026-08-30 21:14:43 UTC


README

Filament integration for Laravel Client Validation. It ships the ClientValidationPlugin for Filament panels, the clientValidation() / withoutClientValidation() macros on native fields (TextInput, Select, ...), and the HasClientValidation trait / ClientValidatedField wrapper for custom components.

The plugin resolves validation rules at render time, injects x-validate attributes (plus a name attribute with the field's state path, which Filament v5 inputs otherwise render without), and forwards evaluated validationMessages() / validationAttribute() values so the browser shows the same messages Laravel would.

Installation

composer require mrpunyapal/client-validation-filament

Usage

Register the plugin on any Filament panel:

use MrPunyapal\ClientValidation\Filament\ClientValidationPlugin;

class AdminPanelProvider extends PanelProvider
{
    public function panel(Panel $panel): Panel
    {
        return $panel
            ->plugins([
                ClientValidationPlugin::make(),
            ]);
    }
}

Then attach client-side rules to any native field:

TextInput::make('email')
    ->required()
    ->email()
    ->clientValidation();

clientValidation() with no rules derives the client-side rules from the field's own required state and validation rules (server-only rules such as unique or exists are filtered out). Custom messages and attributes are shared with the server:

TextInput::make('email')
    ->required()
    ->email()
    ->validationAttribute('email address')
    ->validationMessages([
        'required' => 'Please provide your :attribute.',
        'email' => 'Please provide a valid :attribute.',
    ])
    ->clientValidation();

Testing

composer install
composer test