2013-01-06 28 views
8

Sto cercando di utilizzare il routing in CI per creare un modulo di iscrizionecodeigniter parametro opzionale

signup è re-indirizzato a user/signup

Ma la mia funzione di registrazione può contenere un paramater: function signup($type = 1)

Come posso rendere questo opzionale tramite il routing? Ho provato $route['signup/?(:num)'] = 'user/signup/$1';, ma quando si va a /signup sto ottenendo un 404, solo /signup/1/ funziona.

risposta

14

il modo più chiaro per esprimere questo probabilmente sarebbe dichiarare entrambe le vie:

$route['signup'] = "user/signup"; 
$route['signup/(:num)'] = "user/signup/$1"; 
+0

Che funziona bene, non pensare di questo, stavo cercando di capire come renderlo opzionale. Grazie! –

+0

La modifica sembra non funzionare, non sembra che invii il parametro con esso –

+0

Grazie, penso che preferisco la tua prima soluzione, più facile da leggere/ricordare. –

12

Per chiunque altro leggendo questo a tempo debito - Credo che la risposta dovrebbe essere $route['signup/?(:num)?'] che rende il numero opzionale pure. Ho avuto problemi simili su qualcos'altro.

+0

Grazie ** Ukuser32 **, la tua risposta funziona per me .. – Adnan

1

Il problema con la risposta di @ Ukuser32 è che consente l'accettazione di URI come il signup69, che in questo caso potrebbe essere innocuo, ma nel caso generale è indesiderabile. Basta mettere la barra con l'catturato: num

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

e si noti che se si dispone di più segmenti opzionali, allora si avrà bisogno di nidificare loro ....

Problemi correlati