Пользовательский сценарий маршрутизации лития
Мне было поручено переписать существующий веб-сайт с большим уже существующим каталогом ссылок. Ради аргумента, давайте предположим, что мы не можем сделать ничего, что изменило бы каталог ссылок. Вот несколько примеров структуры ссылок, с которыми мы работаем:
Страница элемента будет:
www.domain.com/widgets/some-totally-awesome-large-purple-widget
Страница подстраницы категории будет:
www.domain.com/widgets/purple-widgets
Страница родительской страницы категории будет:
www.domain.com/widgets/
Пользовательская страница может быть:
www.domain.com/some-random-page
Различные типы страниц слишком многочисленны, чтобы писать отдельные Маршрутизаторы.
Используя Router :: connect, я легко могу учесть первый и второй сценарии, используя что-то вроде:
Router::connect('/{:pageroot}/{:pagekey}', 'Pages::index');
В свою очередь, метод Pages :: index ищет записи в нашей базе данных с ключом «/ widgets / purple-widgets».
Однако для каркаса по умолчанию используется маршрут '/ {: controller} / {: action} / {: args}' для страниц, подобных третьей и четвертой. Я знаю, что это правильное поведение для фреймворка. Кроме того, в соответствии с передовым опытом я должен написать сайт, соответствующий этому поведению. Но это не вариант здесь.
Мне нужен маршрутизатор, который позволил бы третьему и четвертому примерам функционировать так же, как первый. Все примеры должны быть отправлены в контроллер Pages :: index, который, в свою очередь, запрашивает базу данных, используя URL-путь в качестве ключа.