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 Widget Laravel Package

friendsofvictoire/form-widget

Form widget for Victoire: adds a reusable component for embedding and managing forms inside the Victoire CMS page builder, so editors can place and configure form content directly in their layouts without custom integration work.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — poor as framed. The most important finding for a TPM is a category mismatch: despite being described as a "Laravel/PHP package," friendsofvictoire/form-widget is a Symfony bundle built for the Victoire CMS (a Symfony-based website builder). It is not a Laravel package and will not install into a Laravel application without pulling in Symfony's Form, HttpKernel, DependencyInjection, and EventDispatcher components plus Victoire's widget registry. If the intake ticket said "Laravel," that is a scoping error to correct before any estimation happens.

What it actually does. It registers a "Form" widget inside Victoire's page editor, letting a non-technical editor drop a form onto a page, define fields through Victoire's widget configuration UI, and render it via Symfony Form. Value is entirely contingent on already running Victoire as your CMS.

Integration feasibility — low. Three blockers stack up:

  1. Host framework dependency. The bundle assumes Symfony bundle auto-registration, Victoire's Widget base classes, and its asset/templating pipeline. There is no Laravel service provider, no facade, no config publish stub.
  2. Editor coupling. The "create custom forms" capability is a Victoire admin-UI feature. Extracted from Victoire, all that remains is a thin Symfony Form wrapper — functionality you would rebuild in a day with laravel/framework's validation plus a form builder, and which you would have to rebuild anyway since the UI half doesn't port.
  3. No adapter path. Symfony Form → Laravel has no supported bridge (the historical symfony/form Laravel integrations are unmaintained). You would be writing glue code with no upstream.

Technical risk — very high. Zero stars, zero dependents, zero downstream consumers is not a neutral signal; it means no production usage to shake out bugs, no issue history to read, and no third party who will notice a regression. Victoire itself has been effectively dormant for years, so transitive security patching is unlikely. The bundle also implies form-submission persistence (Doctrine-backed) — meaning PII lands in a schema you don't control and can't easily audit for retention/GDPR requirements.

Key questions to resolve before committing:

  • Is there an existing Victoire deployment this must serve, or is this greenfield? (If greenfield, the answer is almost certainly "no.")
  • What PHP and Symfony versions does the bundle declare, and are they still receiving security support?
  • Where are submissions stored, and what is the retention/export/deletion story?
  • Does it include CSRF, honeypot, rate limiting, or captcha hooks? If not, we own spam mitigation end-to-end.
  • Who is the accountable maintainer, and what is our fork-and-own willingness?
  • Is there a licence and a documented public API, or would we be reverse-engineering the widget contract?

Integration Approach

Stack fit — none for Laravel. Be direct with stakeholders: this is not adoptable in a Laravel codebase. The realistic paths, in order of preference:

  1. Reject and replace (recommended). If the requirement is "let editors build forms without a deploy," the modern Laravel-shaped answer is a form-builder package with active maintenance plus a Filament/Nova admin surface, or a hosted form product embedded via iframe. Cost: days, not weeks, and it comes with a support contract.
  2. Adopt only inside an existing Victoire site. If a legacy Victoire property already exists and the ask is narrowly "add forms to it," evaluate in-place on that codebase — not in the Laravel app. Scope it as a legacy-site change with a hard sunset date.
  3. Fork and own. Only if the business genuinely requires Victoire. Budget for a maintained fork: vendor the bundle, pin Symfony, patch security yourself. Treat it as an internal package, not a dependency.

Migration path. There is no incremental migration from this bundle into Laravel — the abstraction it offers (a widget in someone else's editor) doesn't exist on the target. Any migration is a rewrite of the form definitions as Laravel validation rules plus Blade/Livewire components, with a one-time export of existing submissions out of the Doctrine tables into your own schema.

Compatibility. Verify the composer.json constraints against our PHP runtime before anything else. Expect it to target PHP 5.6–7.x and Symfony 2.8/3.x given Victoire's era; if so, it is incompatible with any current PHP 8.2+ runtime on day one, and the real cost is upgrading or pinning an EOL runtime — a security decision, not an engineering one.

Sequencing (if we proceed on path 2 or 3):

  1. Confirm runtime/PHP constraint compatibility — hard gate.
  2. Spike: install on a throwaway Victoire instance, build one form end-to-end, confirm submission persistence and spam behaviour.
  3. Security review of the submission storage and any file-upload field type.
  4. Decide fork-and-own vs. reject; document the decision and the sunset condition.
  5. Only then estimate delivery.

Operational Impact

Maintenance — the dominant cost. With zero downstream users, we are the de facto maintainers from day one. Realistically that means: monitoring upstream for a Symfony security advisory and being the ones to patch it, because nobody else will. Plan a standing allocation, even if small, and name an owner. Without a named owner this package silently rots.

Support. No community, no Stack Overflow corpus, no vendor. Internal ramp-up requires reading Victoire and Symfony Form source directly. Budget roughly a week of senior engineer time just to reach competence on the widget lifecycle — and note that knowledge walks out the door with the engineer, since there's no external documentation to fall back on.

Scaling. Low-to-moderate concurrency is fine — Symfony Form rendering is stateless and the work is trivial. The real scaling concern is submission volume and storage: Doctrine-backed submissions on the primary database grow unbounded, and there's no evidence of async processing, queueing, or archival. At meaningful traffic you inherit table bloat, slow admin listings, and a data-retention problem. Load-test the submission path, not the render path.

Failure modes to plan for:

  • Silent submission loss — no queue/retry/alerting; a validation or DB error surfaces only as a user-facing 500 with no captured lead. Mitigate with application-level logging and an alert on non-2xx form POSTs.
  • Spam flood — if there's no built-in rate limiting, an unprotected public POST endpoint becomes a database-filling vector. Rate-limit at the edge regardless of what the bundle offers.
  • PII exposure — submissions in an unaudited table with no deletion workflow is a compliance finding waiting to happen. Define retention and subject-access handling up front.
  • Upstream abandonment — already the base case; the failure mode is a CVE we can't patch because the runtime is EOL. This is the argument for path 1.
  • Editor-UI breakage on CMS upgrade — the widget contract is a private API of Victoire; any upgrade is a breaking-change gamble with no changelog to consult.

Ramp-up. Expect 1–2 weeks before a competent Symfony developer is productive, and materially longer for anyone whose background is Laravel-only — the mental model of bundles, DI compiler passes, and the widget registry does not transfer. Factor that into the estimate rather than assuming "it's just PHP."

Recommendation. Do not adopt. The package's advertised value is inseparable from a dormant CMS, the framework mismatch is fundamental rather than fixable, and the zero-adoption profile means we would be buying an unmaintained liability. Re-scope the requirement against a maintained form-builder in the actual target stack.

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.
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route