grossum/extended-form-type
Grossum Extended Form Type is a Laravel/PHP package for extending standard form types, making it easier to build reusable, customized form fields with less boilerplate. It fits into existing form workflows and helps keep field definitions clean and maintainable.
Architecture fit — poor. Despite being distributed via Composer and written in PHP, grossum/extended-form-type is a Symfony bundle (ExtendedFormTypeBundle), not a Laravel package. It hooks into Symfony's symfony/form component and the Symfony DI/HttpKernel bundle registration lifecycle (Bundle class, Resources/config/services.yml, form type extensions). Laravel has no bundle registry, no form component, and no equivalent extension point — its form handling is Blade + FormRequest validation + controller-bound request data. Nothing in this package maps onto that architecture without importing a parallel framework subsystem.
Integration feasibility — low. Three viable paths, all unattractive:
symfony/form is framework-agnostic), but you would be introducing a second validation/rendering paradigm alongside Laravel's, plus the bundle layer is dead weight since Laravel cannot boot a Symfony bundle. You would use the underlying form types directly, not this package as shipped.Technical risk — severe.
symfony/form 5/6/7 support, no security triage.php: ^7.0|^7.1 and symfony/form: ^2.8|^3.0, which collide with Laravel 10/11's PHP 8.1+ floor and with current symfony/* transitive constraints. Composer resolution failure is the expected outcome, not an edge case.Key questions.
Stack fit — none as a bundle. Treat the repository as reference source code, not a dependency. The Symfony bundle wrapper is unusable in Laravel; only the underlying form-type classes carry potential value, and only after re-implementation.
Migration path — re-implement, do not install. Recommended sequence:
FormRequest rules for validation, Blade components or <x-form.*> for rendering, Livewire/Filament for dynamic collection add-remove, custom Rule objects for the non-trivial constraints.composer.json.Compatibility — disqualifying. Expect composer require to fail outright against Laravel 10/11 (php >=8.1, symfony/* ^6|^7). Forcing it via --ignore-platform-reqs or a replace block trades a clean failure for runtime failures that surface later, in production, at the framework boundary.
Sequencing. Capability extraction → native implementation → parity tests → removal of the package reference. If step 1 reveals genuinely non-trivial logic (complex conditional schemas, server-driven form definitions), escalate to a build-vs-fork decision before writing code — but scope that fork to the type classes only, vendored internally with a named owner and a PHP-version maintenance commitment.
Decision. Do not adopt. If the functionality is required, re-implement against Laravel's native form and validation stack; the porting cost is measured in days and eliminates an unmaintained dependency from the critical path.
Maintenance — unacceptable as a dependency. No maintainer activity since 2018, no issue triage, no release cadence. Any defect we hit becomes our defect, with no upstream to escalate to. Every future PHP or Symfony major bump becomes a manual patch cycle against code we did not write.
Support — none. Zero stars and zero dependents means no community, no Stack Overflow corpus, no third-party tutorials, no one else hitting our bugs. Internal onboarding relies entirely on whoever reads the source.
Scaling — neutral to negative. The package itself is unlikely to be a throughput bottleneck (form type definition is a per-request metadata concern, typically cheap). The real scaling cost is organisational: a frozen dependency accumulates upgrade debt that compounds each time the platform moves, eventually forcing a rushed migration under deadline pressure.
Failure modes.
Ramp-up — low effort, low payoff. Reading the package is fast (small surface area), but that speed reflects thin value rather than simplicity. A new engineer can absorb the needed behaviour in a day and re-implement it in Laravel idiomatically; the ramp-up cost of adopting it as-is is higher, because they must also learn Symfony's form component's model to use it correctly.
Net operational verdict. This is a zero-community, seven-year-stale Symfony artifact being evaluated for a Laravel stack. The correct operational posture is to keep it out of composer.json entirely, capture its behaviour as documentation, and own a small native implementation instead — trading an unpatchable dependency for a few days of well-scoped engineering.
How can I help you explore Laravel packages today?