Я пытаюсь реализовать маршрут типа массива в Laravel 5.8.
Вот что я пробовал:
Route::get('/','/myroute', 'MyController@index');
Route::get(['/','/myroute'], 'MyController@index');
Route::get([('/','/myroute')], 'MyController@index');
Route::get('/' || '/myroute', 'MyController@index');
По сути, я пытаюсь создать маршрут с условием «ИЛИ».
Допустим, я хочу получить доступ к MyController index, используя mydomain.dev/ или mydomain.dev/myroute, но получаю 404|Не найдено.
Пытался прочитать Документация Laravel, но не могу найти что-то, что указывало бы мне на то, что я пытаюсь сделать.






Маршрутизатор Laravel не обеспечивает функциональность, но поскольку это макрос, вы можете добавить простой макрос, чтобы решить ситуацию. Ниже я приведу пример.
В RouteServiceProvider или любом сервис-провайдере зарегистрируйте макрос:
Route::macro('gets', function(array $urls, $action) {
foreach($urls as $url) {
Route::get($url, $action);
}
}
Теперь используйте его следующим образом в своем routes.php
Route::gets(['/', '/myroute'], 'MyController@index')
Route::get('/{myroute?}', function () {
echo 'test';
})
->where('myroute', '(myroute|mysecondroute)');
Это пример. вы определяете в своем маршруте переменную, которая может принимать значения, которые у вас есть в вашем классе where
Это означает, что конечные точки
api/myroute
api/
api/mysecondroute
будет иметь доступ к той же маршрутизации и разработке одного и того же контроллера
{myroute} должно быть необязательным, хотя я думаю.
Вы не можете назначить массив как маршрут (также известный как первый аргумент в методе get), это должна быть строка. Если вам нужно 2 маршрута для одного и того же контроллера, определите для этого 2 отдельных маршрута.
Route::get('/route', 'Controller@method');
Route::get('/another-route', 'Controller@method');
да, это та же идея, что и @Mihkel
Вот пример, который вы хотите реализовать.
Route::get('/{param?}', 'MyController@index')
->where('param', '(myroute|myroute2)');
По указанному выше маршруту вы можете создать следующие URL-адреса для той же функции контроллера.
www.site.com/
www.site.com/myroute
www.site.com/myroute2
Попробуйте это, я думаю, это поможет вам.
Если вы определяете маршрут, который перенаправляет на другой URI, вы можете использовать метод Route::redirect:
Route::redirect('/here', '/there');
нет, мне нужно определить маршруты для одного контроллера, чтобы не перенаправлять
Да, но я хочу сделать это так, как я объяснил выше