Динамическое объявление роутов в LARAVEL
Вопрос по части LARAVEL
В файле web.php есть такие роуты:
# Страницы
Route::resources(['articles' => ArticlesController::class]);
# Мероприятия
Route::resources(['events' => EventsController::class]);
# Календарь
Route::resources(['calendar' => CalendarController::class]);
Мне нужно их объявить динамично, например так:
$ClassArray['articles'] = 'ArticlesController';
$ClassArray['events'] = 'EventsController';
$ClassArray['calendar'] = 'CalendarController';
foreach($ClassArray as $mod=>$class){
Route::resources([$mod => $class::class]);
}
Разумеется "$class::class" выдает ошибку.
Как это сделать правильно?
Ответы (2 шт):
Автор решения: Simon
→ Ссылка
Попробуйте сделать таким образом, должно работать:
$ClassArray['articles'] = ArticlesController::class;
$ClassArray['events'] = EventsController::class;
$ClassArray['calendar'] = CalendarController::class;
foreach($ClassArray as $mod=>$class){
Route::resources([$mod => $class]);
}
Автор решения: Vladimir Gonchar
→ Ссылка
В файле app/Providers/RouteServiceProvider.php раскомментируйте строку (примерно 29-30 строка):
protected $namespace = 'App\\Http\\Controllers';
В файле роутов в таком случае можно использовать старый вариант написания контроллеров через строки.
В Вашем случае это будет так:
$ClassArray = [
'articles' => 'ArticlesController',
'events' => 'EventsController',
'calendar' => 'CalendarController',
];
Route::resources($ClassArray);