CodeIgniter маршрутизация - PullRequest
0 голосов
/ 29 июля 2011

Мне нужно написать маршрут CI, чтобы он загружал нужный контроллер. Что я хочу сделать, это написать маршрут, который исключает контроллер «функции». Вот мои маршруты (но первый не работает).

$route['(\w{2})/(\w{2})/products/([\w]+!features)'] = "products/products/$3";  // folder/controller/method
$route['(\w{2})/(\w{2})/products/features/([\w]+)'] = "products/features/$3";  // folder/controller/method

То, что я хочу, это чтобы верхняя строка загружала любой контроллер, который не является контроллером функций. Но я получаю конфликты между двумя линиями. Я попытался разместить "! Features" в нескольких разных местах строки, с кавычками и без них, и я все еще получаю либо контроллер функций для загрузки, либо один из других методов в контроллере продуктов для загрузки. Но не оба. Может кто-нибудь помочь здесь? Спасибо.

1 Ответ

1 голос
/ 29 июля 2011

Попробуйте изменить первую строку на:

$route['(\w{2})/(\w{2})/products/(?!features$)(\w+)'] = "products/products/$3";
  • (?!foo) - отрицательный прогноз, если не удается, если все, что следует, соответствует foo.
  • $ означает конец строки и должен убедиться, что features не является частью более длинного слова.
...