Пользовательский сценарий маршрутизации лития

Мне было поручено переписать существующий веб-сайт с большим уже существующим каталогом ссылок. Ради аргумента, давайте предположим, что мы не можем сделать ничего, что изменило бы каталог ссылок. Вот несколько примеров структуры ссылок, с которыми мы работаем:

Страница элемента будет:

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-путь в качестве ключа.

Ответы на вопрос(2)

Ваш ответ на вопрос