vlucas/valitron
Valitron is a lightweight, dependency-free PHP validation library with simple, readable rules. Validate arrays like $_POST in one call, get structured errors, and extend with custom rules and callbacks—minimal code, well tested, and framework-agnostic.
HttpFoundation). It complements Laravel’s existing validation ecosystem (e.g., Form Requests, API Resources) without redundancy.requiredWith, requiredWithout, equals, etc.), which is critical for Laravel’s form handling (e.g., multi-step forms, conditional fields).PUT payloads, nested Form Requests) reduces boilerplate for validating deeply structured inputs.Validator facade or service providers for domain-specific logic.Request objects, Form Requests). Can replace or augment Laravel’s built-in validator for specific use cases (e.g., legacy systems, microservices).spatie/laravel-valitron).Validator error formatting (e.g., Validator::make()->errors()->messages()). Workaround: Post-process errors or create a wrapper.Validator facade or API responses?Validator::extend() or service providers?Validator) in older Laravel apps.// Before (Laravel)
public function rules() {
return ['email' => 'required|email'];
}
// After (Valitron)
$validator = new \Valitron\Validator($request->all());
$validator->rule('required', 'email')->rule('email', 'email');
laravel-valitron) to:
Validator facade to support Valitron rules.// In a service provider
Validator::extend('valitron', function ($attribute, $value, $parameters, $validator) {
$valitron = new \Valitron\Validator([$attribute => $value]);
$valitron->rule($parameters[0], $attribute, ...array_slice($parameters, 1));
return $valitron->validate();
});
$validator = Validator::make($data, [
'email' => 'required|email',
]);
$valitron = new \Valitron\Validator($data);
$valitron->rule('requiredWith', 'password', 'email');
if (!$validator->passes() || !$valitron->validate()) { ... }
$request->all() or $request->validate() arrays, but lacks Laravel’s Request object methods (e.g., filled(), input()). Workaround: Pre-process data.rules() method in Form Requests, but requires manual error handling.public function validateResolved() {
$validator = new \Valitron\Validator($this->all());
$validator->rules($this->rules());
if (!$validator->validate()) {
throw new \Illuminate\Validation\ValidationException($validator->errors());
}
}
StoreRequest for API payloads).Validator facade for frontend-facing errors.requiredWith, etc.) may require additional documentation.sometimes rule with Valitron’s requiredWith."How can I help you explore Laravel packages today?