Codeigniter 4 - возможен ли маршрут без класса контроллера в URL?
Есть структура приложения, где маршруты обрабатываются стандартно domain.name/controller/method
Можно ли как то реализовать маршрутизацию без имени контроллера? То есть, запрос типа domain.name/article-alias система будет отправлять на отдельный контроллер, например как то так
$routes->add('/(:any)', 'Article::show/$1');
Чтобы получилась структура domain.name -> Заголовок отдельной статьи
И второй момент, можно ли реализовать маршрутизацию потому же принципу для пути
domain.name -> Имя категории товаров -> алиас товара
$routes->add('/(:any1)/(:any2)', 'Product::show/$1/$2');
При этом, разумеется, маршруты имеющие конкретные контроллеры должны обрабатываться как положено domain.name -> shop показывает страницу, вызванную контроллером Shop, так как такой контроллер существует
То есть, цель этого всего добиться уменьшения цепочки маршрута в URL, Буду очень признателен!
Ответы (1 шт):
Все маршруты с :any нужно ставить по порядку, ближе к концу списка роутов. Первыми прописываются маршруты с известными методами (shop), если адрес не domain.name/shop то сработает следующий с :any Для множественных сегментов аналогично - начать с конкретных роутов, и завершить /:any/:any
Будет плохо, если маршрут совпадает с :any (shop допустим). Ожидая статью, получите контроллер Shop, всесто Article (из за порядка)