novius/laravel-nova-menu
Nova menu manager
A Nova tool to manage menus.
Requirements
- PHP >= 8.2
- Laravel Nova >= 4.0
- Laravel Framework >= 10.0
NOTE: These instructions are for Laravel >= 9.0 and Laravel Nova 4.0. If you are using prior version, please see the previous version's docs.
Installation
composer require novius/laravel-nova-menu
Then, launch migrations
php artisan migrate
Configuration
Some options that you can override are available.
php artisan vendor:publish --provider="Novius\LaravelNovaMenu\LaravelNovaMenuServiceProvider" --tag="config"
Edit default templates
Run:
php artisan vendor:publish --provider="Novius\LaravelNovaMenu\LaravelNovaMenuServiceProvider" --tag="views"
Usage
Blade directive
You can display menu with :
<x-laravel-nova-menu::menu menu="slug-of-menu" />
You can also display menu by passing the model instance :
<x-laravel-nova-menu::menu :menu="Menu::find(1)" />
By default a fallback to app()->getLocale() is activated.
If you want force a specific slug with no fallback you can call :
<x-laravel-nova-menu::menu menu="slug-of-menu" :localeFallback="false" />
If you want to use a specific view you can call :
<x-laravel-nova-menu::menu menu="slug-of-menu" view="partial/menu" />
Override views
You can override views with :
php artisan vendor:publish --provider="Novius\LaravelNovaMenu\LaravelNovaMenuServiceProvider" --tag="views"
Manage internal link possibilities
Laravel Nova Menu uses Laravel Linkable to manage linkable routes and models. Please read the documentation.
Customize tree passed to the view
<?php
namespace App\Providers;
use Novius\LaravelNovaMenu\LaravelNovaMenuService;
class AppServiceProvider extends ServiceProvider
{
// ...
public function boot()
{
/**
* @var LaravelNovaMenuService $menu
*/
$menu = $this->app->get('laravel-nova-menu');
$menu->setTreeUsing(function(Menu $menu, array $tree) {
// ... your actions on tree
return $tree;
});
}
}
Customize tree building
<?php
namespace App\Providers;
use Novius\LaravelNovaMenu\LaravelNovaMenuService;
class AppServiceProvider extends ServiceProvider
{
// ...
public function boot()
{
/**
* @var LaravelNovaMenuService $menu
*/
$menu = $this->app->get('laravel-nova-menu');
$menu->setBuildTreeUsing(function(Collection $items) {
// ... your actions to build tree as an array
return $tree;
});
}
}
Lint
Run php-cs with:
composer run-script lint
Contributing
Contributions are welcome! Leave an issue on Github, or create a Pull Request.
Licence
This package is under GNU Affero General Public License v3 or (at your option) any later version.
Related Packages
A Laravel Nova tool to give you ability to put tooltip in fields in every where...
This Laravel Nova package allows you to create and manage menus and menu items.
This Laravel Nova package allows you to create and manage menus and menu items.
This Laravel Nova package allows you to create and manage menus and menu items.