Основной вопрос о 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 контроллер вместо нескольких небольших контроллеров с немного большей структурой и обзором.

Вы можете использовать одно из следующих действий для достижения желаемого результата:

Более подробную информацию о MVC можно найти здесь

Другие вопросы по тегам