Кастомная маршрутизация в коде ingniter - PullRequest
0 голосов
/ 08 октября 2011

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

http://myecommsite.com/store/mens

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

Возможно ли это?

Кроме того, когда я иду дальше по линии ... т.е.

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

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

1 Ответ

3 голосов
/ 08 октября 2011

Просто определите пользовательский маршрут в application/config/routes.php

Что-то вроде вашего URL http://myecommsite.com/store/mens

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

Таким образом, все запросы будут сопоставлены с вашим методом «customfunction», который принимает параметр «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" вы выбираете элемент массива и делаете то, что вам нужно сделать

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