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

Rich Model Forms Bundle Laravel Package

sensiolabs-de/rich-model-forms-bundle

A Symfony bundle for building forms around rich domain models and value objects. It supplies form types, data mappers, and transformers so immutable objects, DTOs, and constructor-based models can be bound and validated without public setters, keeping form and domain layers cleanly separated.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy on form-to-domain mapping. The bundle addresses a concrete gap: Symfony's Form component naturally produces array-shaped data, while rich domain models (value objects, entities, DTOs) need translation. This informs whether the team writes its own mapper layer or accepts controller-level array shuffling.
  • Feature scoping for back-office/admin surfaces. If the roadmap includes many CRUD forms over money, dates, addresses, or other value objects, the mapper approach determines whether each form is a few lines or bespoke glue code. This is a velocity decision, not just an architecture one.
  • Domain-modeling direction. Supports the call between keeping models rich (DDD-leaning, mapper required) versus anemic, form-aligned arrays (faster now, costlier later). It makes the tradeoff explicit rather than accidental.
  • Internal component library / platform roadmap. The bundle's pattern — data mappers as first-class configuration on form types — is a useful reference for a homegrown abstraction the team actually owns.
  • Legacy and upgrade planning. If the codebase already depends on it, this flags a forced migration off default array mapping before the next Symfony major upgrade.

When to Consider This Package

  • Only for existing users. If a product already uses it, evaluate behavior during upgrades — but treat it as a planned exit, not a long-term dependency.
  • Consider the pattern, not the package. Worth studying when forms bind to DTOs or value objects and the team is writing repeated mapFormData / mapDataToForm code. Reimplementing with Symfony's built-in DataMapperInterface is straightforward.
  • Look elsewhere when:
    • Starting new work — it is archived, with 1 star and 0 dependents, meaning no maintenance, no security patching, and no community safety net.
    • Running a current Symfony version — native DataMapperInterface and getData()/setData() overrides cover the use case without a third-party bundle.
    • The team cannot commit to forking and owning it — orphaned dependency risk outweighs the convenience.
    • Forms are already scalar or array-shaped — there is no meaningful gain.

How to Pitch It (Stakeholders)

  • Executives: "This is a small utility that lets forms talk directly to our domain objects instead of raw arrays. It is archived and unmaintained with essentially no users, so we should not adopt it. The useful takeaway is a decision: a thin internal mapper is a few days of work and removes repeated glue code across every form we build."
  • Engineering: "The bundle demonstrates a clean way to attach data mappers to form types so rich models bind without controllers doing manual array mapping. It originated at SensioLabs and is now archived under Qossmic — treat it as a reference implementation, not a dependency. We can replicate the pattern in-house with Symfony's DataMapperInterface. If we are already using it, budget a migration before the next Symfony major upgrade."
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.
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource