Как создать маршрут Codeigniter, который не перекрывает другие маршруты контроллера? - PullRequest
5 голосов
/ 28 марта 2010

У меня есть много контроллеров в моих приложениях Codeigniter, например: Регистрация, Профиль, Главная и т. Д.

Теперь я хочу собрать контроллер " Пользователь ".

что я хочу:

  • если люди переходят по URL: example.com / signup , я хочу использовать маршрут по умолчанию для контроллера " Registration "
  • если люди переходят по URL-адресу: example.com / bobby.ariffin , я хочу перенаправить его на контроллер " Пользователь ", поскольку URL-адрес не обрабатывается каким-либо контроллером в моих приложениях .

Я должен был создать это в моем config / rout.php :

$route['(:any)'] = "user";

но он переопределяет все маршруты в моих приложениях на контроллер " Пользователь ".

Есть ли какой-нибудь простой маршрут для Codeigniter, который не перекрывает другие маршруты контроллера?

Обновление ---

У меня есть простое регулярное выражение для этой проблемы: Блог Дэниела Эрранте

$route['^(?!ezstore|ezsell|login).*'] = “home/$0″;

где ezstore, ezsell и login - это имя контроллера в ваших приложениях.

Ответы [ 2 ]

5 голосов
/ 19 января 2012

Для этого вы также можете использовать оператор foreach. Таким образом, вы можете держать свои контроллеры в хорошем аккуратном списке.

$controller_list = array('auth','dashboard','login','50_other_controllers');

foreach($controller_list as $controller_name)
{
    $route[$controller_item] = $controller_name;
}

$route['(:any)'] = "user/display/$1";
3 голосов
/ 28 марта 2010

Вам нужно будет явно определить все эти маршруты. В противном случае вы всегда окажетесь в «user_controller».

$route['signup'] = "signup";
$route['(:any)'] = "user/display/$1";

или что-то подобное. Они выполняются по порядку, поэтому то, что когда-либо определено первым, произойдет первым. Поэтому, если вы поймаете (: any), вы отправите НИЧЕГО этому контроллеру.

Также имейте в виду, что вы можете использовать регулярные выражения, поэтому, если вы знаете, всегда будет '.' там вы можете проверить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...