suncat/admin-page-board-bundle
The Suncat Admin Page Board Bundle adds a configurable admin board page to Symfony applications, letting you organize pages, widgets, or records in one dashboard. It is simple to install, easy to configure, and integrates cleanly with existing admin tooling and workflows.
This is a Symfony2 bundle, not a Laravel package — before anything else, accept that it will not composer require into a Laravel app and work. You will only get value from it inside a Symfony 2.x / early 3.x application that already runs SonataAdminBundle. If you're strictly Laravel, treat this as reference material for how to model dashboards out of reusable blocks (e.g. with a nwidart/laravel-modules-style block registry plus Blade partials), not as a dependency.
Assuming a Symfony2 + Sonata host:
composer.json alongside the matching Sonata stack (sonata-project/admin-bundle, sonata-project/block-bundle).app/AppKernel.php inside the registerBundles() array, after the Sonata bundles:
new Sonata\AdminBundle\SonataAdminBundle(),
new Sonata\BlockBundle\SonataBlockBundle(),
new Suncat\AdminPageBoardBundle\SuncatAdminPageBoardBundle(),
app/config/routing.yml.Resources/config/ (services, block definitions) and Resources/views/ — that's where the board/block wiring and templates live. Read the DependencyInjection/Configuration.php to see exactly which config keys the bundle accepts before writing any YAML.sonata.block (typically sonata.block with an admin context) that returns a BlockContext/Response. Reuse the same block service across the global Sonata dashboard and a custom board — this is the whole point of the bundle: the board is a page shell, the blocks stay portable.config.yml (or the bundle's convention if it expects a PHP/DI config) so the layout is versionable and reviewable. Avoid hand-building blocks in a controller — you lose caching and the admin context that Sonata's block renderer provides.MenuBuilder group so it appears in the sidebar. Gate it with a ROLE_* check (or Sonata ACL) — boards are often role-specific, and the menu item should be hidden, not just protected at the route.board.editor, board.support, board.finance, each with 3–5 blocks, and switch menu groups by role. This maps cleanly onto how Sonata's own dashboard is configured.TemplateBlockService). Override individual block templates from your app's Resources/ rather than editing the bundle.dev to confirm the menu gating and block visibility behave as intended before wiring ACL.Symfony\Component\* APIs, AppKernel, and no PHP 8 / Symfony 4+ support. Audit the code before trusting it in production; be prepared to fork and patch.sonata.block tag name, BlockContext signature, and AbstractAdmin APIs changed across Sonata 2.x → 3.x → 4.x. Pin exact Sonata versions in composer.json and match the bundle's own composer.json constraints — don't ^-float them.php app/console cache:clear --env=dev. This is a frequent "my block disappeared" cause.container:debug (Symfony2) to confirm the block service is registered with the sonata.block tag.app/Resources/SuncatAdminPageBoardBundle/views/... beats the bundle's templates. If your CSS/layout edits aren't appearing, check you're overriding the file the bundle actually renders, not a base Sonata template.src//app/.BlockContext; otherwise a board can leak one user's counts to another.How can I help you explore Laravel packages today?