Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Мне нужно чтобы все ссылки вида /mylink/* попадали в мой роутер. Если задать маску "/mylink/{link}", то то ссылкf вида /mylink/aaa/bbb не обрабатывается. Я это обошел с помощью
'/mylink/{link1}/{link2?}/{link3?}/{link4?}/{link5?}/{link6?}/{link7?}/{link8?}/{link9?}/{link10?}/{link11?}/{link12?}'
но может есть более прямой способ?
Не в сети
Роут куда будет отправлять? На контроллер? На один метод или на разные?
Если на один метод - придумал такой способ, выглядит значительно более органичным. После первого слэша получается эдакий псевдороутинг, и можно писать то, что душе угодно - все улетит в один роут Регулярку подкрутить в нужном направлении и будет делать то, что надо.
// Задаем паттерн для параметра роута (переменной) link - в данном случае английские буквы и цифры в любом количестве, а также слэш для имитации url
Route::pattern('link', '[a-z0-9/]*');
// Собственно в роут включаем эту переменную. Конкретном в строчке ниже для всех url типа mylink/* будет вызываться метод Index для MyController
Route::get('mylink/{link}', 'MyController@index');
Если на разные методы - то надо еще покрутить, или задать себе вопрос о целесообразности такой вложенности роута.
Изменено Gorman (14.01.2018 18:45:43)
Не в сети
На один. Спасибо за вариант.
Не в сети
Страницы 1