- Is object.bg/menubundle a Laravel package?
- No. Despite being listed alongside Laravel and PHP packages, it is a Symfony bundle: the Bundle suffix, Doctrine ORM persistence, KnpMenuBundle rendering, and Sonata Admin dependency all point to Symfony. Any roadmap item that assumes you can composer require it into a Laravel application is built on a false premise and should be corrected before it consumes sprint capacity.
- Can I install MenuBundle in a Laravel application with Composer?
- Not practically. A real Laravel integration would mean replacing Doctrine with Eloquent, Sonata Admin with Filament or Nova, discarding the Symfony DI and bundle registration, and reimplementing the provider against Laravel's container and cache. At that point you are not integrating the package, you are rewriting it. Treat it as a reference design instead.
- How do I install MenuBundle in a Symfony application?
- Install it with Composer using the object.bg/menubundle package name, then register the bundle in your bundles.php or services configuration. You will also need Doctrine entity mapping for the menu tables and Sonata Admin configured for the editing screen. Check the repository for the exact service and routing configuration, and confirm the version constraints before committing.
- What dependencies does MenuBundle pull in?
- The bundle leans on Doctrine ORM for persistence, KnpMenuBundle for rendering the tree, and Sonata Admin for the menu editing UI, all on top of the Symfony framework. That is a heavyweight transitive footprint, since you are effectively adopting an entire admin framework to solve one CRUD screen. Evaluate whether Sonata Admin is already justified in your stack before adding it for menus alone.
- Which Symfony and PHP versions does MenuBundle support?
- This is not clearly documented, and there is no visible release cadence or CI to signal active maintenance. Assume it is pinned to whatever Symfony and PHP versions the originating object.bg application runs internally. Read the composer.json constraints directly and verify those versions are still supported upstream before planning any adoption.
- Is MenuBundle maintained and production ready?
- There is no adoption signal: no stars, no dependents, and no production validation, so nobody catches regressions for you. There is also no visible test suite, CI pipeline, or release cadence. Treat it as unmaintained reference code rather than a dependency candidate, and budget accordingly if you decide to borrow any of it.
- What license is MenuBundle under, and can I fork it?
- The license is unverified, which is a hard gate before any code is copied, forked, or vendored. Confirm the license text in the repository and check that it permits forking and internal redistribution. Do not pull code into a private or commercial codebase until that is settled in writing.
- Is MenuProvider an interface I can implement, or a concrete class?
- This is one of the key questions to resolve before planning any reuse. If MenuProvider is an interface that resolves a menu by handle and returns a tree, the contract is worth borrowing. If it is a concrete class with Doctrine query logic baked in, only the idea is reusable and you should write your own implementation against Eloquent.
- Can I use MenuBundle without Sonata Admin?
- The provider and schema are separable in principle, but the editing UI is the Sonata Admin piece, and that is most of what the bundle actually ships. You could wire your own admin screen on top of the entities, but by then you have written nearly the whole thing. Port the contract shape, not the implementation.
- What is the best way to build editable menus in a Laravel application?
- Define your own MenuProvider interface that resolves a menu by handle, returns a tree, and caches the result. Implement it against Eloquent with menus and menu_items tables, expose editing through Filament or Nova, and render with a Blade component. That is realistically two to four engineer-days for a mid-level developer, fully owned and fully tested, with no license exposure.