/** * @param \Illuminate\Routing\Router $router */ protected function registerMacros(Router $router) { $router->macro('redirect', function ($url, $action) use($router) { $router->get($url, function () use($action) { return redirect()->action($action); }); }); $router->macro('module', function ($slug, $className, $sortable = false) use($router) { if ($sortable) { $router->patch("{$slug}/changeOrder", "{$className}Controller@changeOrder"); } $router->resource($slug, "{$className}Controller"); }); $router->macro('articleList', function ($technicalNamePrefix, $action) use($router) { $articles = Article::getWithTechnicalNameLike($technicalNamePrefix); $router->get(app()->getLocale() . '/' . fragment_slug("navigation.{$technicalNamePrefix}"), function () use($articles) { return redirect(route("{$articles->first()->technical_name}")); })->name($technicalNamePrefix); $articles->map(function ($article) use($technicalNamePrefix, $action, $router) { $router->get(app()->getLocale() . '/' . fragment_slug("navigation.{$technicalNamePrefix}") . '/' . $article->url, $action)->name("{$article->technical_name}"); }); }); }