Заголовок получился seo-шный, набор тегов каких-то, но сейчас объясню в чем дело.
Задача стоит такая: при обращении по адресу domain.ru/admin/game/edit/215/ запускать метод edit контроллера Admin модуля Game с параметром 215. Но я бы не стал писать пост если бы все было просто.
Еще раз, используемый стэк: Codeigniter 3.1 + HMVC, а при обращении к указанному выше URL я получаю 404 ошибку из-за передаваемого параметра в метод edit.
Чтобы URL такого рода срабатывали, то нужно прописать в роутах следующее:
Если быть точным, то такой роут срабатывал РАНЬШЕ, а в версии 3.1 он уже не срабатывает.
Сравниваем куски кода из Route.php из метода _parse_routes()
раньше:
сейчас:
Раньше :any в роутах заменялся на .+, а теперь :any возвращает один сегмент до слэша.
В общем вот верный роутинг:
Ошибки 404 нет, параметры в методы передаются корректно.
Задача стоит такая: при обращении по адресу domain.ru/admin/game/edit/215/ запускать метод edit контроллера Admin модуля Game с параметром 215. Но я бы не стал писать пост если бы все было просто.
Еще раз, используемый стэк: Codeigniter 3.1 + HMVC, а при обращении к указанному выше URL я получаю 404 ошибку из-за передаваемого параметра в метод edit.
Чтобы URL такого рода срабатывали, то нужно прописать в роутах следующее:
$route['admin/([a-zA-Z0-9_-]+)/(:any)'] = '$1/admin/$2';
Если быть точным, то такой роут срабатывал РАНЬШЕ, а в версии 3.1 он уже не срабатывает.
Сравниваем куски кода из Route.php из метода _parse_routes()
раньше:
$key = str_replace(':any', '.+', str_replace(':num', '[0-9]+', $key));
сейчас:
$key = str_replace(array(':any', ':num'), array('[^/]+', '[0-9]+'), $key);
Раньше :any в роутах заменялся на .+, а теперь :any возвращает один сегмент до слэша.
В общем вот верный роутинг:
$route['admin/([a-zA-Z0-9_-]+)/(.+)'] = '$1/admin/$2';
Ошибки 404 нет, параметры в методы передаются корректно.
0 коммент.:
Отправить комментарий