Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Form Extra Bundle Laravel Package

simplethings/form-extra-bundle

A Symfony bundle that adds practical extra form types and helpers for building complex forms with less boilerplate. It offers reusable utilities and improved collection handling to keep form code cleaner and easier to maintain.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. There is a fundamental platform mismatch to surface first: simplethings/form-extra-bundle is a Symfony 2 bundle, not a Laravel package. It ships a Symfony Bundle class, DI extension, and service definitions wired into Symfony's Form component and Twig form theme system. It cannot be installed into a Laravel application as a working dependency — Composer may resolve it, but nothing will register it, and none of its form types will be usable without Symfony's FormFactory. For a Laravel/PHP codebase the artifact is therefore reference material, not a dependency.

Integration feasibility. As a Symfony2-era package, its useful surface is a set of additional AbstractType implementations (widgets such as Chosen/Select2-style selects, reCAPTCHA, autocomplete/AJAX entity fields) plus Twig form themes. Those are the pieces worth evaluating, and each already has a modern Laravel-native equivalent: Blade form components, Livewire/Alpine for dependent fields, npm-packaged Select2/Tom Select, and maintained captcha packages. Porting effort is low-to-moderate per widget but is a rewrite, not an integration.

Technical risk. High and non-negotiable in three areas: (1) Abandonment — last release June 2014, no security or compatibility maintenance for roughly a decade; (2) runtime incompatibility — code targets PHP 5.3/5.4 and Symfony 2.x APIs, which are removed in PHP 7.2+/8.x and in every Symfony since 3.0; (3) supply-chain — 99 stars and zero dependents means no community validation, no downstream bug reports, and no fork ecosystem to lean on. There is no realistic path to running this code in production on a current stack, so the risk is not "will it break" but "it will not load."

Key questions.

  • Is there any actual Symfony 2.x estate in scope, or is this purely a Laravel roadmap? (If Laravel-only, the answer is "do not adopt." )
  • Which specific behaviours are we trying to replicate — the AJAX entity autocomplete, the enhanced select widgets, or the captcha? The answer determines whether we need a build task at all or just a package choice.
  • Are we licensing-in the code as a reference (MIT/BSD terms permitting) or treating it as design inspiration?
  • Who owns the decision if a stakeholder has already cited this repo as a candidate?
  • What is our policy on packages with no release in >24 months, and does this clear it? (It does not.)

Integration Approach

Stack fit. Poor by construction. Laravel's form layer (Illuminate\Html historically, now Blade components and laravelcollective/html or Spatie/Livewire stacks) has no concept of Symfony FormType, FormTypeExtension, or form themes. The bundle's value is conceptual: it demonstrates how to wrap a JS widget in a server-side form abstraction. That pattern translates to Blade components cleanly; the code does not.

Migration path. Recommended path is substitute, do not port:

  1. Inventory the desired widgets from the bundle's form types (enhanced select, autocomplete/AJAX entity picker, captcha, and any read-only/help-text types).
  2. Map each to a maintained Laravel-side option — Tom Select or Select2 via npm + a Blade component; Livewire wire:model.live or Alpine for dependent/AJAX fields; a maintained captcha package for the captcha type.
  3. Implement as reusable Blade components with a thin PHP options object, preserving the ergonomic win the bundle originally offered.
  4. Only if a specific widget has no modern equivalent should we consider reading the bundle's implementation as a specification and reimplementing the behaviour, with attribution per its license.

Compatibility. Assume none. PHP 5-era syntax (short array syntax is fine, but missing scalar/return types, old Symfony\Component\Form\AbstractType::setDefaultOptions/getName lifecycle, deprecated Twig form theme syntax) will not run against current PHP or Symfony. Any attempt at a direct install should be treated as a spike with a hard time-box, not a delivery task.

Sequencing. (a) Confirm platform scope and kill the direct-adoption option explicitly in writing; (b) widget inventory and mapping table; (c) component build with tests; (d) documentation and a short ADR recording why we did not use this bundle, so the question does not resurface. Total effort for a typical form set is days, not weeks — which is precisely why a 2014 unmaintained dependency is not worth defending.

Operational Impact

Maintenance. Direct adoption would create permanent ownership of unowned code: no upstream to patch CVEs, no compatibility releases for PHP or framework upgrades, and no issue tracker activity to consult. Every future runtime upgrade becomes our problem. The substitution path inverts this — components we own, small enough to maintain, built on dependencies with active release cadences.

Support. Zero dependents and 99 stars means effectively no community to escalate to; internal support would rest entirely on whoever wrote the port. Bus factor is the dominant risk, so the component work should be documented and reviewed by at least two engineers.

Scaling. The bundle itself is a thin form-layer wrapper with no meaningful runtime scaling characteristics — the scaling question is on the underlying widgets (autocomplete endpoints, select data volume), which is where we should focus design review regardless of provenance. Note that AJAX-backed entity fields need pagination and query limits designed in from the start; that is a build concern, not a package concern.

Failure modes. With direct adoption: install-time failure, autoload/registration failure, silent no-op because the Symfony DI container is absent, and — worst case — partial functionality masking a brittle dependency. With substitution: scope creep on widget parity, inconsistent UX if components are built ad hoc rather than as a shared set, and drift between the form layer and JS assets if versioning is not pinned.

Ramp-up. Near-zero for anyone on a modern stack; the code is only legible as Symfony2 history. Budget roughly half a day of engineer time to read the repo and produce the widget inventory and mapping table, and one to three days to build the replacement components. That is the entire cost of doing this the right way, and it should be the recommendation to stakeholders: this package is a design input, not a dependency, and the 2014 release date plus zero dependents disqualifies it from production use under any reasonable dependency policy.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels
wazza/laravel-db-encryption
hokny/laravel-generator
vonsogt/backup
jengo/queues
jeremykenedy/laravel-observability
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums