Ответ 1
у вас есть проблемы с вашими скобками маршрутов, просто измените их с {} на() скобки будут работать
от
$route['subjects/(:num)/{:any}'] = 'subjects/view/$1/$2';
к
$route['subjects/(:num)/(:any)'] = 'subjects/view/$1/$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.
у вас есть проблемы с вашими скобками маршрутов, просто измените их с {} на() скобки будут работать
от
$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';
$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
Я однажды попробовал этот шаблон 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';
И это сработало для меня:)