In M .odel V .iew C .ontroller, такие как CodeIgniter. Представления являются элементами пользовательского интерфейса. Они не должны анализировать результаты.
Если я не ошибаюсь, вам нужно передать данные от www.yoursite.com/index.php/form
к www.yoursite.com/index.php/search
В неструктурированном php у вас может быть form.html
с действием формы search.php
. Пользователь может перейти к yoursite.com/form.html
, что вызовет yoursite.com/search.php
, что может привести к перенаправлению на yoursite.com/results.php
.
В CodeIgniter (и, насколько я понимаю, в любой системе MVC, независимо от языка) ваш Контроллер , Form
вызывает функцию, которая загружает form.html
View в себя и затем запускает его. View генерирует код (обычно HTML, но не обязательно), с которым взаимодействует пользователь. Когда пользователь делает запрос, который представление не может обработать (запрашивает дополнительные данные или другую страницу), он передает этот запрос обратно в контроллер, который загружает дополнительные данные или другое представление.
Другими словами, представление определяет способ отображения данных. Контроллер сопоставляет запросы с представлениями.
Это немного усложняется, если вы хотите, чтобы сложные и / или изменяющиеся данные отображались в виде. Чтобы поддерживать разделение интересов , которое требуется для MVC, CodeIgniter также предоставляет вам Модели .
Модели отвечают за самую сложную часть любого веб-приложения - управление потоком данных. Они содержат методы для чтения данных, записи данных и, что наиболее важно, методы для обеспечения целостности данных. Другими словами, модели должны:
- Убедитесь, что данные в правильном формате.
- Убедитесь, что данные не содержат ничего (вредоносного или иного), которое могло бы нарушить среду, для которой они предназначены.
- Имеют методы для C . Обработки, R .eading, U .pdating и D . Удаления данных в пределах вышеуказанного ограничения.
Akelos имеет хорошее графическое изображение компонентов MVC:
(источник: akelos.org )
При этом самый простой (читайте «самый простой», а не «самый расширяемый») способ выполнить то, что вы хотите сделать, это:
function Form()
{
parent::Controller();
}
function index()
{
$this->load->view('form');
}
function search()
{
$term = $this->input->post('search');
/*
In order for this to work you will need to
change the method on your form.
(Since you do not specify a method in your form,
it will default to the *get* method -- and CodeIgniter
destroys the $_GET variable unless you change its
default settings.)
The *action* your form needs to have is
index.php/form/search/
*/
// Operate on your search data here.
// One possible way to do this:
$this->load->model('search_model');
$results_from_search = $this->search->find_data($term);
// Make sure your model properly escapes incoming data.
$this->load->view('results', $results_from_search);
}