Overview
By default, Nova’s main left-side navigation menu displays all of your application’s dashboards, resources, and any custom tools you have registered.
dashboards method within your application’s App\Providers\NovaServiceProvider class.
Nova will also automatically group your resources under the default “Resources” menu section according to the group property defined in the Resource class. In addition, any custom tools you have registered will be listed in the order they are defined within your application’s NovaServiceProvider.
Customizing the Main Menu
While Nova’s default main menu is sufficient for most applications, there are times you may wish to completely customize the menu based on your own preferences. For that reason, Nova allows you to define your own main menu via theNova::mainMenu method. Typically, this method should be invoked within the boot method of your application’s App\Providers\NovaServiceProvider class:
app/Providers/NovaServiceProvider.php

Customizing the User Menu
Nova also allows you to customize the “user” menu found in the top-right navigation area. You can customize Nova’s user menu by calling theNova::userMenu method. This method is typically invoked within the boot method of your application’s App\Providers\NovaServiceProvider:
app/Providers/NovaServiceProvider.php
By default, Nova is configured to display a “logout” link in the user menu. This link may not be removed.
Nova’s user menu only supports
MenuItem objects. Using MenuSection or MenuGroup inside the user menu will throw an Exception.Appending / Prepending to the Menu
You may call theappend and prepend methods on a Menu instance to prepend or append new items to the. These methods are typically most helpful when customizing the user menu, since you often do not want to completely replace the existing menu:
app/Providers/NovaServiceProvider.php
Menu Sections
Menu sections represent a top-level navigation item and are typically displayed with an corresponding icon representing the types of items in the menu. You can create a new menu section by calling theMenuSection::make method. This method accepts the name of the menu section and array of menu groups / items that should be placed within the section:
app/Providers/NovaServiceProvider.php
path method when defining the menu section:
MenuSection::dashboard method:
resource method to quickly create a link to the appropriate path for a given resource:
lens method:
Menu sections that are defined as
collapsable do not support also being a link. Calling path on a menu section when it’s collapseable will result in no link being shown.Menu Section Icons
You can customize the icon displayed for your menu section by invoking theicon method when defining the menu section:
icon method.
Menu Section Badges
You may add visual badges to your menu section by calling thewithBadge method on your MenuSection and specifying the options for the badge:
Conditional Badges
Using thewithBadgeIf method, you may conditionally add a badge only if a given condition is met:
Collapsable Menu Sections
You may make your menu sections collapsable by invoking thecollapsable method when defining the menu section. For convenience, Nova will remember the open state for the section between requests:
Menu Groups
Sometimes you may need another logical level between your menu sections and menu items. In this case, menu groups are the perfect solution. Menu groups allow you to group menu items under their own emphasized heading:Collapsable Menu Groups
You may make your menu groups collapsable by invoking thecollapsable method on the group. For convenience, Nova will remember the open state for the group between requests:
Menu Items
Menu items represent the different types of links to areas inside and outside of your application that may be added to a custom Nova menu. Nova ships with several convenience methods for creating different types of menu items. First, to create a link to an internal area of Nova, you may call thelink factory method on the MenuItem class:
Resource Menu Items
Since you will often be creating links to Nova resources, you may use theresource method to quickly create a link to the appropriate path for a given resource:
Filtered Resource Menu Items
To create a link to a Nova resource with a predefined filter applied, you can use thefilter method, passing in an instance of the filter and the value it should receive. Since filters can be used with multiple resources, you must also pass a name for the menu item, since it cannot be automatically generated:
Using Multiple Filters With Filtered Resource Menu Items
You may also pass multiple filters to a resource menu item. For instance, let’s imagine you wanted to create a menu item that linked to yourUser resource, showing users that have an email ending in @laravel.com and that also have a status of active:
Passing Constructor Parameters to Filtered Resource Menu Items
Nova filters may also receive constructor parameters to enable convenient re-use of your filters across resources. To pass the parameters when creating a filtered resource menu item, just provide them to the filter’smake method:
Lens Menu Items
Similar to resource items, you may create links to Nova lenses via thelens method:
Dashboard Menu Items
You may also create a link to any of your custom Nova dashboards by calling thedashboard factory method:
External Link Menu Items
To create a link that directs the user to a location that is totally outside of your Nova application, you may use theexternalLink factory method:
openInNewTab method on your menu item:
method helper to pass in the HTTP method, request data, and any HTTP headers that should be sent to your application when the link is clicked. This is typically useful for items like logout links, which should be POST requests:
Menu Item Badges
You may add visual badges to your menu item by calling thewithBadge method on your MenuItem and specifying the options for the badge:
Conditional Badges
You may also conditionally add badge only if the condition is met.Authorizing Menu Items
You may use thecanSee method to determine if a menu item should be displayed for the currently authenticated user: