splash/validator
Laravel validation helper that streamlines building and running validators with a simple, fluent API. Designed to reduce boilerplate around rules, messages, and attribute names, making request/data validation easier to reuse across controllers, services, and jobs.
Validator lacks extensibility.FormRequest, Validator, and ServiceContainer, reducing friction in adoption. Supports both API and form validation use cases.spatie/laravel-validation.rules() or authorize() methods.handle() methods.boot() or observers.Validator::extend() pattern, allowing for reusable, maintainable validation logic across the application.ValidationException or custom error formats, ensuring consistency with existing error responses.Validator. Mitigation: Audit existing validation logic and scope the package for domain-specific or complex nested validations.spatie/laravel-validation). Mitigation: Isolate the package in a dedicated namespace/module.Validator cannot? (e.g., connector schema validation, nested module data).Validator::extend() for adding custom rules?ValidationException, or require custom handling?$this->app->singleton('splash-validator', function ($app) {
return new \Splash\Validator\Validator();
});
public function handle($request, Closure $next) {
$validator = app('splash-validator');
if (!$validator->validate($request->all(), $rules)) {
return response()->json(['errors' => $validator->errors()], 422);
}
return $next($request);
}
rules() with custom validators:
public function rules() {
return array_merge(parent::rules(), [
'connector_id' => ['required', 'splash:connector_exists'],
'nested.data' => ['splash:validate_nested_schema'],
]);
}
public function processPayment(array $data) {
$validator = app('splash-validator');
$validator->validate($data, ['amount' => 'required|numeric|min:0.01']);
// Proceed with payment logic...
}
handle() methods:
public function handle(ConnectorEvent $event) {
$validator = app('splash-validator');
$validator->validate($event->data, ['schema' => 'splash:connector_schema']);
}
Validator::extend('splash', function ($attribute, $value, $parameters, $validator) {
return \Splash\Validator\Facades\Validator::validate($value, $parameters);
});
Validator calls, custom functions).Validator to avoid redundancy.required|string|email) with the package’s basic rules.@deprecated comments.illuminate/validation compatibility).json, mbstring, fileinfo for file validations).exists:table), ensure:
spatie/laravel-validation).php artisan vendor:publish --provider="Splash\Validator\ValidatorServiceProvider"
composer.json:
composer require splash/validator
config/app.php:
Splash\Validator\ValidatorServiceProvider::class,
php artisan vendor:publish --tag="splash-validator-config"
// app/Providers/AppServiceProvider.php
use Splash\Validator\Facades\Validator as SplashValidator;
public function boot() {
Validator::extend('splash', function ($attribute, $value, $parameters, $validator) {
return SplashValidator::validate($value, $parameters);
});
}
config/validation.php).public function test_custom_validator() {
$validator = app('splash-validator');
How can I help you explore Laravel packages today?