Search code examples
laravellaravel-nova

How to reorder Laravel Nova's navigation including groups?


How to change the order of them, just as a customer would want?


Solution

    1. You create a copy of Laravel\Nova\Tools\ResourceManager somewhere in you codebase.
    2. You add a "files" key to composer.json under "autoload"

      "autoload": {
            "psr-4": {
                "App\\": "app/"
            },
            "classmap": [
                "database/seeds",
                "database/factories"
            ],
            "files": ["app/<your path>/ResourceManager.php"]
      },
      
    3. In ResourceManager.php you change

      public function renderNavigation()
      {
          $request = request();
          $groups = Nova::groups($request);
      
          $newNavigation = collect([
              'Group1' => collect([
                  Resource1::class,
                  Resource2::class,
                  Resource3::class,
              ]),
              'Group2' => collect([
                  Resource4::class,
                  Resource5::class,
              ]),    
          ]);
      
          return view('nova::resources.navigation', [
              'navigation' => $newNavigation,
              'groups' => $groups,
          ]);
      }