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

Entity Hidden Type Bundle Laravel Package

qbbr/entity-hidden-type-bundle

Symfony bundle providing a hidden entity form type for Doctrine entities. Embed entity references as hidden fields and transform submitted IDs back into entities, making it easy to preserve related objects in forms without exposing a visible selector or extra UI.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Scope mismatch first: despite the brief framing this as a Laravel/PHP package, qbbr/entity-hidden-type-bundle is a Symfony 2 bundle. It is not a Laravel package, has no service provider, no facade, and no illuminate/* compatibility. Any Laravel leverage is conceptual (the pattern), not direct code reuse.

What it does: provides a Symfony form type that renders an entity as a hidden input — serializing the entity's identifier into the field and re-hydrating the entity on submit. Useful in Symfony 2-era forms where you wanted to pass a related record through a form without exposing a full entity choice widget.

Architecture fit: Poor. The value is a single small form-type class (~50–100 LOC equivalent). Laravel's form layer is Blade + Request validation + Eloquent binding; there is no FormType extension point to plug into. Reproducing the behavior natively is a hidden <input> plus an exists: validation rule plus an authorization check — a half-day of work at most.

Integration feasibility: Effectively zero as a dependency. Symfony 2 reached end-of-life in November 2018; its symfony/form and symfony/http-kernel constraints will conflict with any modern PHP/Laravel dependency graph. The bundle predates PSR-11 alignment, likely uses Symfony\Component\Form\AbstractType APIs that no longer exist, and installs on PHP 5.5–7.0-era toolchains.

Technical risk: Very high relative to negligible benefit:

  • Zero adoption signal — 0 stars, 0 dependents, 0 score. No external validation, no issue history to mine for known failures, no evidence anyone runs it in production.
  • Unmaintained — no security response capability. A hidden field carrying an entity ID is a classic IDOR/tampering surface; an opaque, unmaintained type that auto-hydrates entities from request payloads is precisely where you do not want hidden behavior.
  • Abandonment risk is already realized — there is no future state in which this becomes a good bet.

Key questions to resolve before any further evaluation:

  1. Are we solving a real problem, or has a developer pattern-matched a stale package name? What form actually needs an entity passed as a hidden value?
  2. Can we meet the requirement with a Laravel exists: rule + Gate/Policy check on the submitted ID? (Almost certainly yes.)
  3. Is there a licensing or provenance concern with vendoring the code (license file, author, last commit date)?
  4. Does the pattern require hydrating the entity server-side at all, or can we keep the ID as an opaque validated scalar and resolve it in the controller?
  5. What is the security review cost of importing unmaintained code that deserializes request input into Eloquent models?

Verdict: Recommend do not adopt. Reproduce the pattern natively; carry no dependency.

Integration Approach

Stack fit: None directly. There is no adapter path from a Symfony 2 FormType bundle into Laravel's container, validation pipeline, or Blade rendering. Forcing it would mean pulling in a symfony/form component tree alongside Illuminate — a dependency-graph collision with no compensating benefit.

Migration path: There is nothing to migrate from. The correct path is a pattern port, not a code port:

  • Render a hidden input carrying the related model's primary key in the Blade view.
  • Validate the submitted key with exists:table,id (or a scoped Rule::exists(...)->where(...) to enforce tenancy/ownership).
  • Authorize with a Policy/Gate check before resolving the model.
  • Resolve the model in the controller or a form request, not in the view layer.

Compatibility: The bundle's PHP and Symfony constraints are incompatible with any currently supported Laravel release (Laravel 10/11/12 require PHP 8.1+). Attempting to install it will either fail resolution or require --ignore-platform-reqs-style coercion, which is a red flag in itself.

Sequencing (if the team still wants to explore):

  1. Spike (0.5 day): Reproduce the hidden-entity behavior natively in one Laravel form; write the exists + policy validation; confirm it covers the use case.
  2. Security review (0.5 day): Confirm tampered IDs are rejected and cross-tenant IDs cannot be smuggled through the hidden field.
  3. Decide: If the spike succeeds — and it will — close the package evaluation and document the native pattern as the standard.
  4. Fallback only: If there is some edge case the native pattern genuinely cannot express, vendor the ~100 LOC of the type under our own namespace with attribution and tests, rather than depending on the abandoned repository.

Operational Impact

Maintenance: AdopTING this means owning it. There is no upstream. Any PHP or framework upgrade that touches the code path becomes our bug to fix, in code we did not write and cannot get support for. Carrying it also imposes a permanent "why is this here?" tax on every future engineer who reads composer.json.

Support: Zero. No maintainer activity, no issue tracker momentum, no community to escalate to. Internal Slack archaeology is the entire support model.

Scaling: Operationally trivial — it is a form type, not a service; negligible runtime cost. The scaling concern is not throughput, it is organizational: a dead dependency in the graph blocks or complicates future framework and PHP upgrades across the whole application, and that cost is paid by every team, not just the one that added it.

Failure modes:

  • Silent breakage on upgrade — the type stops hydrating correctly after a framework bump; forms submit with null related models and only surface as data-integrity bugs downstream.
  • IDOR / tampering — a hidden field is user-controlled by definition. If the type hydrates entities from raw input without an ownership check, cross-tenant record references become reachable by editing the DOM. This is the highest-severity risk.
  • Stale references — the referenced entity is deleted between render and submit; behavior depends on nullable handling that we do not control.
  • Mass-assignment adjacent — auto-hydration can quietly place a model instance into request-bound data, bypassing validation you thought was in place.
  • Dependency-graph rot — the abandoned constraint becomes the reason a PHP or Laravel upgrade is deferred, with the deferral attributed to "that form bundle" months after the original author has left.

Ramp-up: Learning the bundle's behavior is cheap; the expensive part is the archaeology — reconstructing intent, license provenance, and security posture for code nobody owns. Expect a day of diligence to arrive at the same place a half-day native implementation would have reached directly.

Bottom line for the roadmap: Reject the dependency; capture the pattern as a documented internal convention with validation and authorization baked in. Net effort saved versus adoption: roughly one day of integration and an unbounded future maintenance liability.

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.
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core