Я создаю учебную систему с помощью codeigniter и хотел бы получить следующую структуру URL:
Проблема в том, что когда я хочу использовать первые два типа URL-адресов, мне нужно будет передать параметры функции индекса контроллера. Первый параметр – необязательная категория, второй – дополнительный идентификатор учебника. Я провел некоторое исследование до того, как отправил сообщение, поэтому выяснил, что я мог бы добавить маршрут, например, tutorials/(:any)
, но проблема в том, что этот маршрут будет передавать add
в качестве параметра при использовании последнего URL (/ tutorials /Добавить).
Любые идеи, как я могу это сделать?
Ваши правила маршрутизации могут быть в следующем порядке:
$route['tutorials/add'] = "tutorials/add"; //assuming you have an add() method $route['tutorials/(:any)'] = "tutorials/index"; //this will comply with anything which is not tutorials/add
Затем в методе index () вашего контроллера вы сможете определить, проходит ли идентификатор категории или учебника!
Я думаю, что переназначение должно быть более полезным для вашей проблемы, если вы хотите добавить больше методов к контроллеру, а не просто «добавить». Это должно выполнить задачу:
function _remap($method) { if (method_exists($this, $method)) { $this->$method(); } else { $this->index($method); } }
Через несколько минут после публикации, я думаю, я нашел возможное решение для этого. (Мне стыдно).
В псевдокоде:
public function index($cat = FALSE, $id = FALSE) { if($cat !== FALSE) { if($cat === 'add') { $this->add(); } else { if($id !== FALSE) { // Fetch the tutorial } else { // Fetch the tutorials for category $cat } } } else { // Show the overview } }
Обратная связь для этого решения приветствуется!