digitalrevolution/symfony-request-validation
Validator component, which Laravel already replaces with its own Illuminate\Validation facade. Redundancy risk if Laravel’s built-in validation suffices.Illuminate\Foundation\Http\FormRequest).Illuminate\Validation\Validator).ValidatedRequest trait).Request object, validation rules) differs from Symfony’s. Key blockers:
Validator vs. Laravel’s Validator (different rule syntax, constraints).bundles.php) is Symfony-specific; Laravel uses service providers.ValidatedRequest class assumes Symfony’s Container and ParameterBag.symfony/validator component (v6.2+) directly in Laravel (already supported via vender:publish).ValidatedRequest trait) that maps Symfony rules to Laravel’s syntax.symfony-validation-shorthand) independently of the bundle.Container → Laravel’s Container).Validation → Laravel’s Validator).ParameterBag → Laravel’s Request).spatie/laravel-validation may offer similar functionality with lower risk.Why Symfony Validation?
@Assert\Callback) or nested validation that Laravel lacks?Migration Strategy
Validator for backend + Laravel frontend) work, or is full Laravel integration required?Long-Term Viability
Performance/Complexity Tradeoff
Validator::extend()).@Assert\Expression).Validator.Request lifecycle, reusable across projects.| Approach | Steps | Effort | Risk |
|---|---|---|---|
| Native Laravel | Use FormRequest + Validator (no changes). |
Low | None |
| Symfony Validator | 1. Install symfony/validator via Composer. 2. Publish config. 3. Use in services. |
Medium | Medium (DI conflicts) |
| Custom Wrapper | 1. Create ValidatedRequest trait. 2. Map Symfony rules to Laravel syntax. 3. Test edge cases. |
High | High (custom logic) |
| Hybrid (Backend) | Use Symfony Validator in Laravel’s console commands or API backend only. |
Medium | Low |
Validator supports most Symfony constraints (e.g., NotBlank, Length), but not all (e.g., @Assert\Callback).Validator::extend() to bridge gaps.Request extends Illuminate\Http\Request, not Symfony’s ParameterBag. Solution: Create a RequestAdapter class.Container → Laravel’s Container. Solution: Use Laravel’s service binding or manual instantiation.Validator in a Laravel service (e.g., app/Validators/SymfonyValidator.php).ValidatedRequest objects.FormRequest with custom validation logic.Validator may be heavier than Laravel’s).Validator errors may be less familiar to Laravel devs (e.g., constraint violation paths).Validator format).Validator is slower than Laravel’s for simple cases (due to reflection and constraint loading).Validator for performance-critical paths.Validator.| Risk | Impact | Mitigation |
|---|---|---|
| Validation Rule Mismatch | Incorrect validation logic. | Write integration tests for rule mappings. |
| DI Conflicts | Symfony services clash with Laravel. | Isolate Symfony Validator in a dedicated service. |
| Error Handling Issues | Poorly formatted validation errors. | Normalize error responses to Laravel’s format. |
| Package Abandonment | Upstream stops maintaining. | Fork or migrate to native Laravel validation. |
| Performance Bottlenecks | Slow validation in high-traffic APIs. | Benchmark and optimize (e.g., cache constraints). |
ValidatedRequest classes (e.g., app/Http/Requests/Validated/).How can I help you explore Laravel packages today?