Skip to main content
The bundle registers a Symfony Web Profiler data collector named nowo_dashboard_menu. It appears in the debug toolbar and profiler only in the dev environment — there is no overhead in production.

What the panel shows

For each menu loaded on the current request, the panel shows:
  • Code — the resolved menu code
  • Context sets — the context sets passed to the loader (if any)
  • Resolved context — the actual context matched from the database
  • Root item count — number of root-level items returned
  • Item summary — a tree of items with their labels, types, icons, and child counts
  • Query count — number of database queries attributed to that menu load

Configuration tab

The panel also exposes the active bundle configuration for quick reference:
SectionWhat you see
ConnectionDoctrine connection name and table prefix
CacheTTL and cache pool name
LocalesConfigured locales and default locale
Icon mapicon_library_prefix_map entries
Permission checkersRegistered checker service IDs and their labels

Using the panel for debugging

1

Open the profiler

Make a request in your browser. Click the Symfony debug toolbar at the bottom of the page, then navigate to the Dashboard menus section.
2

Identify loaded menus

Check which menus were resolved for the request. If a menu you expected is missing, the code or context sets may not match any stored menu.
3

Check query counts

Review the query count per menu. High counts can indicate a missing cache pool or a very large menu tree loaded without caching.
Set a cache.pool in your config and a reasonable ttl to reduce repeated DB hits for the same menu.
4

Verify configuration

Use the Configuration tab to confirm the active Doctrine connection, table prefix, cache settings, and registered permission checkers without opening any YAML files.

How query counting works

The data collector inspects the Symfony db profiler collector after the request completes (lateCollect). It scans collected SQL queries and counts those that reference tables starting with dashboard_menu. This count is an approximation based on SQL string matching — it does not wrap or intercept the Doctrine DBAL connection directly.
Query counting relies on the Doctrine profiler being active. It is only available when symfony/doctrine-bridge and profiler support are present in the dev environment.

Availability

The data collector is registered only when the Symfony Profiler service is present. In prod it is never instantiated, so there is zero performance cost.