How to route 2 parameters to a controller? How to route 2 parameters to a controller? codeigniter codeigniter

How to route 2 parameters to a controller?


you have problem with your route brackets just change it from {} to () brackets will work

from

$route['subjects/(:num)/{:any}'] = 'subjects/view/$1/$2';

to

$route['subjects/(:num)/(:any)'] = 'subjects/view/$1/$2';


Always maintain your routing rules

like

$route['subjects/(:num)/(:any)/(:any)/(:any)'] = 'subjects/view/$1/$2/$3/$4';$route['subjects/(:num)/(:any)/(:any)'] = 'subjects/view/$1/$2/$3';$route['subjects/(:num)/(:any)'] = 'subjects/view/$1/$2';

always follow this pattern for routing

if you add like this

$route['subjects/(:num)/(:any)'] = 'subjects/view/$1/$2';$route['subjects/(:num)/(:any)/(:any)/(:any)'] = 'subjects/view/$1/$2/$3/$4';$route['subjects/(:num)/(:any)/(:any)'] = 'subjects/view/$1/$2/$3';

then always first condition will be true every time.

also refer this link --> codeigniter routing rules


I once tried this URI pattern

$route['(:any)'] = 'welcome/list1/$1';$route['(:any)/(:num)'] = 'welcome/list1/$1/$2';$route['(:any)/(:any)'] = 'welcome/list2/$1/$2';$route['(:any)/(:any)/(:num)'] = 'welcome/list2/$1/$2/$3';$route['(:any)/(:any)/(:any)'] = 'welcome/list3/$1/$2/$3';

but it didnt worked ... so I replaced it with regular expression

([a-z 0-9 -]+) replaced (:any)and ([0-9]+) replaced (:num)

so it became

$route['([a-z 0-9 -]+)'] = 'welcome/list1/$1';$route['([a-z 0-9 -]+)/([0-9]+)'] = 'welcome/list1/$1/$2';$route['([a-z 0-9 -]+)/([a-z 0-9 -]+)'] = 'welcome/list2/$1/$2';$route['([a-z 0-9 -]+)/([a-z 0-9 -]+)/([0-9]+)'] = 'welcome/list2/$1/$2/$3';$route['([a-z 0-9 -]+)/([a-z 0-9 -]+)/([a-z 0-9 -]+)'] = 'welcome/list3/$1/$2/$3';

And it worked for me :)