Подтвердить что ты не робот

Как перенаправить 2 параметра в контроллер?

Это кажется действительно основным, но я не могу понять его.

Я пытаюсь отправить более одного параметра в метод в контроллере, например:

http://localhost/ci/index.php/subjects/3/state

Это маршруты, которые я пробовал:

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

метод принял 2 пареметра:

public function view($slug, $id = null){

}

но я, кажется, получаю 404. Как я могу заставить это работать? Мне нужен метод view, чтобы всегда принимать 1 параметр и необязательные другие параметры.

ПРИМЕЧАНИЕ. Я включаю помощника URL.

4b9b3361

Ответ 1

у вас есть проблемы с вашими скобками маршрутов, просто измените их с {} на() скобки будут работать

от

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

к

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

Ответ 2

Всегда сохраняйте правила маршрутизации

как

$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';

всегда следуйте этому шаблону для маршрутизации

если вы добавите это как

$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';

тогда всегда первое условие будет истинным каждый раз.

также ссылайтесь на эту ссылку → правила маршрутизации codeigniter

Ответ 3

Я однажды попробовал этот шаблон 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';

но он не работал... поэтому я заменил его на регулярное выражение

([a-z 0-9 -]+) заменен (:any) а также ([0-9]+) заменен (:num)

чтобы он стал

$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';

И это сработало для меня:)