【发布时间】:2021-10-15 14:41:20
【问题描述】:
在this question 中,我通过一些代码得到了一个很好的答案。我现在想知道 laravel 的预期实现方式是什么。
代码是:
function getRoutesByGroup(array $group = [])
{
$list = \Route::getRoutes()->getRoutes();
if (empty($group)) {
return $list;
}
$routes = [];
foreach ($list as $route) {
$action = $route->getAction();
foreach ($group as $key => $value) {
if (empty($action[$key])) {
continue;
}
$actionValues = Arr::wrap($action[$key]);
$values = Arr::wrap($value);
foreach ($values as $single) {
foreach ($actionValues as $actionValue) {
if (Str::is($single, $actionValue)) {
$routes[] = $route;
} elseif($actionValue == $single) {
$routes[] = $route;
}
}
}
}
}
return $routes;
}
Route::group(['as' => 'main'], function () {
Route::get('/', function () {
return view('pages.start');
})->name('Home');
Route::get('/foobar', function () {
return view('pages.foobar');
})->name('Home');
Route::get('/business', function () {
return view('pages.business');
})->name('Business');
});
getRoutesByGroup(['as' => 'main']); // where to load this?
我想在两个刀片模板中使用它来呈现菜单。我的第一个想法是将其放入一个 Trait 并在 AppServiceProvider.php 中使用该 Trait,但这似乎只有 5 个内部点燃路线可用,所以我猜它在引导过程中为时过早。
在这种情况下正确的方法是什么?我是否制作了一个 Facade,另一个服务容器,我是否通过在模板中注入来加载它,我是否制作了一个全局变量?
【问题讨论】:
标签: laravel model-view-controller laravel-blade laravel-8