Ответ 1
Самый яркий способ выразить это, вероятно, заключался бы в объявлении обоих маршрутов:
$route['signup'] = "user/signup";
$route['signup/(:num)'] = "user/signup/$1";
Я пытаюсь использовать маршрутизацию в CI для создания формы регистрации
signup
перенаправляется на user/signup
Но моя функция регистрации может содержать параметр: function signup($type = 1)
Как я могу сделать это необязательным через маршрутизацию? Я пробовал $route['signup/?(:num)'] = 'user/signup/$1';
, но при переходе на /signup
я получаю 404, работает только /signup/1/
.
Самый яркий способ выразить это, вероятно, заключался бы в объявлении обоих маршрутов:
$route['signup'] = "user/signup";
$route['signup/(:num)'] = "user/signup/$1";
Для всех, кто читает это со временем, я считаю, что ответ должен быть $route['signup/?(:num)?']
, что делает число необязательным. У меня были похожие проблемы на что-то еще.
Проблема с ответом @Ukuser32 заключается в том, что он позволяет принимать URI, такие как signup69, что в этом случае может быть безобидным, но в общем случае нежелательно. Просто поместите косую черту с захваченным: num
$route['signup(/:num)?'] = "user/signup$1"
И обратите внимание, что если у вас есть несколько необязательных сегментов, вам нужно будет их вложить....