Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 10.01.2018 06:23:04

Роутинг /mylink/id => id='aaa/bbb/ccc'

Мне нужно чтобы все ссылки вида /mylink/* попадали в мой роутер. Если задать маску "/mylink/{link}", то то ссылкf вида /mylink/aaa/bbb не обрабатывается. Я это обошел с помощью
'/mylink/{link1}/{link2?}/{link3?}/{link4?}/{link5?}/{link6?}/{link7?}/{link8?}/{link9?}/{link10?}/{link11?}/{link12?}'
но может есть более прямой способ?

Не в сети

#2 14.01.2018 18:24:40

Re: Роутинг /mylink/id => id='aaa/bbb/ccc'

Роут куда будет отправлять? На контроллер? На один метод или на разные?

Если на один метод - придумал такой способ, выглядит значительно более органичным. После первого слэша получается эдакий псевдороутинг, и можно писать то, что душе угодно - все улетит в один роут smile Регулярку подкрутить в нужном направлении и будет делать то, что надо.

// Задаем паттерн для параметра роута (переменной) 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)

Не в сети

#3 15.01.2018 06:16:14

Re: Роутинг /mylink/id => id='aaa/bbb/ccc'

На один. Спасибо за вариант.

Не в сети

Подвал раздела