jrm/request-bundle
jrm/request-bundle is a Symfony bundle that streamlines HTTP request handling, giving you a structured way to validate incoming data, map parameters to typed objects, and keep controllers thin. Drop-in integration and sensible defaults make it easy to adopt in existing projects.
Request and hydrating manually? That is a real convention decision for teams standardizing controller signatures — but the decision is worth far more than the package itself.FormRequest comparison is moot and should be dropped from any decision record, and (b) on every version it supports, Symfony already ships #[MapRequestPayload] / #[MapQueryString] natively (since 6.3/6.4). The package's remaining differentiator is thin.#[MapRequestPayload] with symfony/serializer + validator — which is the default supported path.Consider it when:
#[MapRequestPayload] / #[MapQueryString] attributes — with a written rationale, because "we didn't know they existed" is the more likely explanation.Look elsewhere when:
FormRequest.#[MapRequestPayload] with symfony/serializer + validator. It is maintained by the framework, covered by the framework's BC policy, and does the same job.To executives — recommendation: no-go, no budget required. This is a small Symfony developer-ergonomics add-on: it lets a controller receive a typed request object directly as an argument. The 0.3.3 release confirms two things. First, it only supports Symfony 7.2 and newer, so adopting it would mean being on — or moving to — a recent framework version to gain a convenience. Second, on that same version the framework already provides this capability natively, at no cost and with framework-level support. Adopting the package would add a dependency with effectively zero community adoption, no support path, and a single maintainer, whose latest patch raised the minimum framework version without a major-version bump. There is no product, revenue, or reliability upside. The right move is to record the pattern, decline the dependency, and if engineering wants the ergonomics, use the native attributes or implement the resolver internally behind our own code and tests.
To engineering — read it, don't require it; and default to the native attributes. It is a clean, minimal example of an argument-value-resolver binding a request object into a controller signature, worth 30 minutes of reading. But the conclusion has firmed up: the framework target is Symfony, the supported floor is 7.2, and #[MapRequestPayload] / #[MapQueryString] cover the same ground natively on every version this package now supports. If we want this convention, standardise on the native attributes and document the serializer/validator wiring; if we want a house-specific variant, implement it as an internal attribute plus resolver with our own tests. Also note for our dependency policy: this project shipped a framework-version floor bump in a patch release, so if it ever does enter the tree, pin the exact version rather than a range.
How can I help you explore Laravel packages today?