Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CodeIgniter optional parameter

I'm trying to use routing in CI to create a signup form

signup is re-routed to user/signup

But my signup function can contain a paramater: function signup($type = 1)

How can I make this optional via routing? I tried $route['signup/?(:num)'] = 'user/signup/$1';, but when going to /signup I'm getting a 404, only /signup/1/ works.

like image 663
woutr_be Avatar asked Jan 06 '13 14:01

woutr_be


3 Answers

The clearest way to express this would probably be to declare both routes:

$route['signup'] = "user/signup";
$route['signup/(:num)'] = "user/signup/$1";
like image 144
Wesley Murch Avatar answered Nov 07 '22 18:11

Wesley Murch


For anyone else reading this in due course - I believe the answer should be $route['signup/?(:num)?'] which makes the number optional as well. I had similar issues on something else.

like image 22
Ukuser32 Avatar answered Nov 07 '22 16:11

Ukuser32


The trouble with @Ukuser32's answer is that it allows for URIs like signup69 to be accepted, which in this case might be innocuous but in the general case is undesirable. Just put the slash in with the captured :num

$route['signup(/:num)?'] = "user/signup$1"

And note that if you have multiple optional segments, then you will need to nest them....

like image 8
Jeff Avatar answered Nov 07 '22 18:11

Jeff