Хотя поначалу идея использования V -> C, C -> M, M -> C выглядит хорошо, любое изменение в форме требует вмешательства в представление «контроллер + модель +». Этого следует избегать, чтобы сохранить логику приложения простой. Вот очень простое расширение фреймворка, которое действительно облегчает обработку веб-форм, делегируя логику обработки форм отдельному классу и сохраняя архитектуру MVC для обработки логики приложения.
Для каждой формы, которую вам нужно обработать, создайте класс, производный от общего класса "webform", или класса модели codeigniter. Добавьте методы, такие как validate (), process (), display () в этот класс.
В контроллере код становится таким:
class User_controller
{
function login()
{
$form = new LoginForm(); // this is the class you would create
if ($form->validate())
{
$data = $this->user_model->getUserData( $form->userid );
// form processing complete, use the main "user" model to fetch userdata for display,
// or redirect user to another page, update your session, anything you like
} else {
$form->display();
}
}
}
Метод display в классе формы загружает свое собственное представление и заполняет данные обратной отправки по желанию. Используя вышеизложенное, есть несколько преимуществ:
Вам не нужно менять основной контроллер, если необходимо изменить отображение или обработку формы.
Вам также не нужно менять свою пользовательскую модель
Контроллер остается чистым и обрабатывает логику главной страницы
Пользовательская модель остается очищенной и взаимодействует только с базой данных
Фреймворк сам может быть обновлен, так что веб-формы могут быть загружены с помощью
$ this-> load-> форма ( "Вход");
......
Однако это только предложение, которое полезно для команды codeigniter.