Я начинаю изучать codeigniter (я использую версию 3.0.0), но у меня есть проблема, когда я пытаюсь маршрутизации с параметрами
В файле rout.php у меня есть:
$route['admin/orders'] = 'admin_orders/index';
$route['admin/orders/(:any)'] = 'admin_orders/index';
$route['admin/orders/getAll'] = 'admin_orders/getAll';
$route['admin/orders/getLast'] = 'admin_orders/getLast';
$route['admin/orders/delete/(:any)'] = 'admin_orders/delete'
;
В admin_orders.php у меня есть:
public function delete(){
$id = $this->uri->segment(4);
echo "ok $id";
}
И в представлении:
<a href="'.site_url("admin").'/orders/delete/3'.'" class="btn btn-info">Delete</a>
Но когда я нажимаю Delete, приложение перезагружает страницу, и если я пытаюсь без / (: any), функция загружается и показывает мне сообщение, и другие маршруты работают.
Конечно, я делаю что-то не так, как я могу загрузить одну функцию с параметром, используя codeigniter 3?
Ваш порядок использования :any
неправильно, так как это, скорее всего, будет соответствовать до остальных. Даже если это не то, что нужно перечислить в более общем последнем, просто чтобы быть в безопасности, потому что, когда маршрутизатор работает по правилам, он остановится, когда скажет, что все соответствует, и если сначала это более общие или общие правила, то он никогда не достигнет конкретный. Точно так же, как правило, следует указывать более точные первые и более общие последние. Вот почему else идет после if и ifelse в стандартной условной логике (что очевидно), но в таких случаях легко пропустить простые правила, подобные этим ..
смотрите также
https://ellislab.com/codeigniter/user-guide/general/routing.html
важные биты
(: num) будет соответствовать сегменту, содержащему только цифры.
(: любой) будет соответствовать сегменту, содержащему любой символ.Примечание. Маршруты будут выполняться в порядке их определения. Более высокие маршруты всегда будут иметь приоритет над более низкими.
Других решений пока нет …