Мне было поручено переписать существующий веб-сайт с большим уже существующим каталогом ссылок.Ради аргумента, давайте предположим, что мы не можем сделать ничего, что изменило бы каталог ссылок.Вот несколько примеров структуры ссылок, с которыми мы работаем:
Страница элемента будет:
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-путь в качестве ключа.