wandi/easyadmin-plus-bundle
Wandi EasyAdmin Plus Bundle enhances Symfony EasyAdmin with extra fields, filters, actions, and admin helpers, making it faster to build polished backends. It integrates into existing dashboards and reduces boilerplate for common CRUD and configuration tasks.
This bundle is a Symfony 4 / EasyAdmin 2.x extension, not a standalone admin system. You still install and configure easycorp/easyadmin-bundle as usual; EasyAdminPlus adds extra field types, widgets, and menu helpers on top of it.
Minimal setup:
composer require wandi/easyadmin-plus-bundle
Register the bundle in config/bundles.php (Symfony 4 Flex):
Wandi\EasyAdminPlusBundle\WandiEasyAdminPlusBundle::class => ['all' => true],
Then import its routes if you use the AJAX/autocomplete endpoints:
# config/routes/wandi_easy_admin_plus.yaml
wandi_easy_admin_plus:
resource: "@WandiEasyAdminPlusBundle/Resources/config/routing.xml"
prefix: /admin
Publish assets (the bundle ships JS/CSS for its field widgets):
bin/console assets:install --symlink
Where to look first: the bundle's DependencyInjection/Configuration.php and the Form/Type directory — that tells you exactly which wandi_* field types exist and what options they accept. The README examples are the fastest path to a working config.
First real use case: swap a boring EasyAdmin collection field for the bundle's enhanced collection type, or add an autocomplete EntityType for a large relation instead of a giant <select>.
Using bundle field types in easy_admin.yaml. The core value is drop-in field types. Instead of type: collection, you use:
form:
fields:
- { property: tags, type: wandi_collection }
- { property: author, type: wandi_autocomplete, type_options: { class: App\Entity\Author } }
- { property: body, type: wandi_editor }
- { property: avatar, type: wandi_upload }
These behave like normal Symfony form types with extra JS behavior (drag/drop collections, Select2-style autocomplete, TinyMCE editor, image preview).
Autocomplete pattern. Use autocomplete for any ManyToOne/ManyToMany where the related table is large. Point the field at the target entity class and let the bundle's AJAX endpoint handle search — this is the single biggest day-to-day win over stock EasyAdmin.
Menu customization. Build the admin menu programmatically via the bundle's menu helper so you can group items, add icons/separators, and inject dynamic counts (e.g. pending-orders badge) instead of hand-writing nested menu.items in YAML.
Widgets on the list/detail pages. Configure wandi_* widgets for richer index columns (image thumbnails, toggles) while keeping standard EasyAdmin list/show/edit/new views.
Keeping config centralized. Follow the standard EasyAdmin pattern — one easy_admin.yaml (or per-entity config) — and layer wandi_* types on top. Do not fork the bundle's templates for small styling tweaks; override in templates/bundles/WandiEasyAdminPlusBundle/ first.
Composition with existing overrides. Because it wraps EasyAdmin 2, your existing templates/bundles/EasyAdminBundle/ overrides still apply. Add bundle overrides alongside, not instead of, them.
AdminController and YAML config model. Treat this as a "legacy Symfony 4 project" tool, not a forward-looking choice.composer why-not) before adding it to a modern 4.4 app — you may need --ignore-platform-reqs or a fork.wandi_* widgets depend on shipped JS/CSS. If drag/drop or autocomplete silently does nothing, run assets:install, clear the browser cache, and check the bundle's route import — missing routes break autocomplete with no useful error.class option and correct route config. A wrong namespace or a missing prefix on the imported routes yields empty suggestions rather than an exception; check the network tab in the browser, not just the Symfony log.easy_admin_plus settings always bin/console cache:clear before debugging odd form behavior.wandi_* type) over editing vendor files, since you'll likely need to fork/upgrade later. Same for templates — override under templates/bundles/WandiEasyAdminPlusBundle/.How can I help you explore Laravel packages today?