Основной вопрос о CodeIgniter URL
Когда я создаю контроллер в CodeIgniter, например "login.php". Я создаю публичную функцию "index" в ней и загружаю представление "login_form" в функцию, CodeIgniter генерирует URL localhost/test/login
,
Теперь, если я создам еще одну функцию "зарегистрироваться" в том же контроллере, URL будет localhost/test/login/register
, но я хочу создать URL как localhost/test/register
, Нужно ли создавать новый регистр контроллера и делать так, чтобы индексная функция или тот же URL можно было сгенерировать, добавив функцию в контроллер входа в систему. Каков "обычный" способ сделать это? Благодарю.
3 ответа
Как уже упоминалось, вы можете (и, скорее всего, должны) использовать маршрут для этого:
// config/routes.php
$route['register'] = 'test/register';
Это в основном говорит: если /register
требуется, дайте им /test/register
,
Обратите внимание, что /test/register
все еще в силе. Если вы хотите отключить его по какой-либо причине, вы можете сделать это:
$route['test/register'] = FALSE; // Or map to your 404 page
... но в целом вам не нужно.
Обратите внимание, что использование маршрутов магическим образом не переписывает ваши ссылки или что-либо еще, а просто направляет запрос куда-то еще, когда он сделан.
Переназначение довольно круто, но то, что вы спрашиваете, это определенно работа для маршрута. Внимательно прочитайте руководство пользователя, с ним можно многое сделать.
Я хотел бы предложить прочитать это руководство о том, как расширить ваш контроллер (в этом случае register
) с проверкой логина. Это сделало бы у вас защищенный код в index
функция вашего register
контроллер. И в любых других контроллерах вы можете добавить. Я думаю, что в вашем подходе теперь вы рискуете иметь один огромный login
контроллер вместо нескольких небольших контроллеров с немного большей структурой и обзором.
Вы можете использовать одно из следующих действий для достижения желаемого результата:
- http://codeigniter.com/user_guide/general/routing.html
- http://codeigniter.com/user_guide/general/controllers.html
Более подробную информацию о MVC можно найти здесь