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

Я хочу использовать codeigniter для проекта электронной коммерции, над которым я работаю, но я думаю, что мне нужна некоторая настраиваемая маршрутизация, и я не уверен, что это возможно. Я хочу иметь возможность использовать этот URL:

http://myecommsite.com/store/mens

По умолчанию в CI это вызовет функцию mens в классе store. То, что я на самом деле хочу, – это назвать общую функцию в классе магазина и подать в «mens» в качестве пареметра. Причиной этого является то, что на этом сайте должна быть секция мужчин, женщин и детей.

Это возможно?

Также, когда я буду дальше вниз по линии … т.е.

http://myecommsite.com/store/mens/category1/category2

как мне заставить Ci работать с этим?

Просто укажите собственный маршрут в application/config/routes.php

Что-то вроде, для вашего url http://myecommsite.com/store/mens

 $route['store/(:any)'] = "store/customfunction/$1"; 

Таким образом, все запросы будут сопоставлены с вашим методом «пользовательской функции», который принимает параметр «mens»,

Вы также можете захотеть скомпоновать функцию __remap () , которая переопределяет методы (в отличие от маршрутизации, которая переопределяет весь URI). Цитата из руководства:

Если ваш контроллер содержит функцию с именем __remap (), она всегда будет вызвана независимо от того, что содержит ваш URI. Он переопределяет обычное поведение, при котором URI определяет, какая функция вызывается, позволяя вам определять собственные правила маршрутизации функций.

Таким образом, вы можете использовать функцию __remap () в хранилище контроллера, и все будет перенаправлено на это. Любые сегменты после имени метода передаются в __remap () как второй параметр, и вы можете использовать этот массив с помощью call_user_func_array () .
Это может пригодиться для ваших вторых примеров URI. Может быть что-то вроде

 function __remap('mymethod',$array = array()) { return call_user_func_array('mymethod',$array); } 

и в вашем методе «mymethod» вы выбираете элемент массива и выполняете то, что вам нужно сделать