api-platform/validator package is a lightweight, standalone validator component designed for API Platform (though not strictly tied to it). It provides validation utilities (e.g., constraints, validation pipelines) that align well with RESTful API validation needs, particularly for:
Illuminate\Pipeline).Validator facade or custom rules.Constraint interface (e.g., @Assert\NotBlank). Laravel’s Validator can mirror these constraints via custom rules or annotations (e.g., vladimir-yuldashev/laravel-validator).app/Http/Middleware/ValidateRequest).ConstraintViolationListInterface. Laravel’s Validator already provides similar output (e.g., Validator::errors()).Validator can replace this for basic use cases.Pipeline and Container support these interfaces, but explicit adapters may be needed.Illuminate\Validation\Validator) with the package’s constraints.@required, @email).Validator and the package’s constraints.Validator?spatie/laravel-validation, laravel-validator) that are Laravel-native?api-platform/laravel-api-platform).Validator for standard rules (e.g., @required).api-platform/validator for custom constraints or pipelines.// app/Http/Middleware/ValidateCustomRules.php
use ApiPlatformValidator\Validator\ConstraintValidator;
use Illuminate\Pipeline\Pipeline;
public function handle($request, Closure $next) {
$validator = new ConstraintValidator();
$violations = $validator->validate($request->all(), new CustomConstraint());
if ($violations->count()) {
throw new ValidationException($violations);
}
return $next($request);
}
Illuminate\Validation\Validator with the package’s validator (high risk; not recommended without thorough testing).FormRequest validation. Workaround: Manually validate in withValidator() or use middleware.Validator returns a Validator object; the package uses Symfony’s ConstraintViolationList. Map errors explicitly:
$violations = $validator->validate($data, new CustomConstraint());
$errors = collect($violations)->map(fn($v) => [
'field' => $v->getPropertyPath(),
'message' => $v->getMessage(),
]);
$this->app->singleton(ConstraintValidator::class, fn($app) => new ConstraintValidator());
Validator for basic cases.Pipeline can host PSR-15 middleware with minor adjustments.Validator and the package’s validator increases complexity.How can I help you explore Laravel packages today?