используя маршруты в Codeigniter, чтобы добраться до одного из двух контроллеров - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть два контроллера Configure.php и Users.php. В моем route.cfg у меня есть:

$route['default_controller'] = 'Users/login';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['registration'] = 'registration';
$route['login'] = 'login';
$route['subit_backend']['GET']='subit_backend/register';
$route['save_userinput']='Users/save_userinput';

Когда пользователь открывает веб-сайт, в браузере появляется следующая страница https://www.stantiation.com/sub_crud/Users/login/, что идеально.

Проблема в том, что, если пользователь забыл свой пароль, у меня возникают проблемы с маршрутизацией его в метод, где они могут создать новый. Я отправил пользователю электронное письмо, в котором я разместил «код», который позволит ему обновить свой пароль. В письме есть ссылка на эту форму: https://www.stantiation.com/sub_crud/Users/resetPassword?fp_code=492c8bbd3841xxx8201f3a01d77fd.

У меня также есть файл представления под названием view / Users / resetPassword.php, который является формой, позволяющей пользователю вводить новый пароль. Это выскакивает хорошо. Это почтовый метод формы. Когда пользователь нажимает «Отправить», я получаю https://www.stantiation.com/sub_crud/Users/save_userinput на панели инструментов и ошибку 404, потому что нет файла save_userinput.php. Я пытаюсь запустить метод save_userinput () в контроллере Users.php, а не save_userinput.php в каталоге view / Users /. Я согласен с 404, потому что этот файл не существует. Как я могу указать в форме, что я хочу метод в контроллере Users, а не в файле view / Users / save_userinput.php? Вот почему я добавил последний маршрут $, но это, похоже, не помогает.

1 Ответ

0 голосов
/ 10 ноября 2018

Возможно, вы понимаете схему URL CodeIgniter.Прочитайте об этом ЗДЕСЬ .

По сути, это сводится к http:doman.tld/controller/function[/var1 ...[/varN]] Итак, после домена у вас есть несколько сегментов, которые интерпретируются так:

  1. Первый сегмент представляет контроллер, который должен быть вызван.
  2. Второй сегмент представляет функцию класса или метод, который должен быть вызван.
  3. Третий и любые дополнительные сегменты представляют любые переменныеэто будет передано контроллеру.

Таким образом, URL https://www.stantiation.com/sub_crud/Users/save_userinput перейдет к контроллеру Users (который находится в папке /application/controllers/sub_crud) и вызовет метод контроллера save_userinput.Он не ищет файл с именем save_userinput.php.

. 404 может быть из-за того, что контроллер не находится в подпапке, или из-за того, что какой-то другой файл, который контроллер пытается загрузить, например, файл «просмотра»,не может быть найден.

Трудно дать лучший совет, не видя html для формы и не зная точно, как у вас структурирован макет файла.

( Примечание: я избегаю помещать контроллеры в подпапки, потому что они портятся с URL "look" и IMO, с точки зрения "контроллеров", это не так сложно отследить, что естьчто. )

Маршруты действительно нужны только тогда, когда вы хотите переопределить сегментный подход CodeIgniter к URL-адресам.Имея это в виду, кажется (на основе общего отсутствия понимания вашего приложения), что следующие "маршруты" не имеют смысла.

$route['registration'] = 'registration';
$route['login'] = 'login';
$route['subit_backend']['GET']='subit_backend/register';
$route['save_userinput']='Users/save_userinput';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...