Cela semble vraiment basique mais je n'arrive pas à comprendre.
J'essaie d'envoyer plus d'un paramètre à une méthode dans le contrôleur, comme ceci:
http://localhost/ci/index.php/subjects/3/state
Voici les routages que j'ai essayés:
$route['subjects/(:num)'] = 'subjects/view/$1';
$route['subjects/(:num)/{:any}'] = 'subjects/view/$1/$2';
la méthode a accepté 2 paramètres:
public function view($slug, $id = null){
}
mais il me semble que j'obtiens un 404. Comment puis-je faire en sorte que cela fonctionne? j'ai besoin de la méthode de vue pour toujours accepter 1 paramètre et d'autres paramètres facultatifs.
NOTE : J'inclus l'assistant d'URL.
vous avez un problème avec vos crochets de route, changez-le simplement de {} à () les crochets fonctionneront
de
$route['subjects/(:num)/{:any}'] = 'subjects/view/$1/$2';
à
$route['subjects/(:num)/(:any)'] = 'subjects/view/$1/$2';
Maintenez toujours vos règles de routage
comme
$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';
suivez toujours ce modèle pour le routage
si vous ajoutez comme ça
$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';
alors toujours la première condition sera vraie à chaque fois.
référez également ce lien -> règles de routage codeigniter
J'ai essayé une fois ce modèle d'URI
$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';
mais cela n'a pas fonctionné ... alors je l'ai remplacé par une expression régulière
([a-z 0-9 -]+)
remplacé (:any)
et ([0-9]+)
remplacé (:num)
il est donc devenu
$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';
Et ça a marché pour moi :)