This seems really basic but i can't get the hang of it.
I'm trying to send more then one parameter to a method in the controller, like this :
http://localhost/ci/index.php/subjects/3/state
This is the routings i've tried :
$route['subjects/(:num)'] = 'subjects/view/$1'; $route['subjects/(:num)/{:any}'] = 'subjects/view/$1/$2';
the method accepted 2 paremeters :
public function view($slug, $id = null){ }
but i seem to get a 404. How can i get this to work? i need the view method to always accept 1 parameter and optional other parameters.
NOTE : I am including the url helper.
Passing Multiple Parameters Using Route to Controller In this example, will first define a route with multiple parameters and then we will add a controller method accepting multiple parameters. Then we will setup a link with named route having multiple parameters.
Route parameters are named URL segments that are used to capture the values specified at their position in the URL. The captured values are populated in the req. params object, with the name of the route parameter specified in the path as their respective keys.
Laravel routes are located in the app/Http/routes.A parameter provided in the route is usually annotated with curly braces. For instance, to pass in a name parameter to a route, it would look like this. By convention, the Controller function accepts parameters based on the parameters provided.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With