Динамическое объявление роутов в 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);
→ Ссылка