Каков наилучший способ справиться со следующей ситуацией в кодеигнитре:
Домашний контроллер имеет действие индекса и действие отправки.
Действие отправки используется для отправки формы. Я хочу загрузить страницу через индексный контроллер, хотя – в том числе после отправки формы, т. Е. С данными ошибок формы, чтобы повторно заполнить входные данные формы при ошибке и т. Д.
Каков наилучший способ сделать это – без контроля указателя с загрузкой главной страницы и представлением формы.
Если вы redirect()
, вы не сможете использовать set_value()
для повторного set_value()
полей формы.
Самое простое, что ваш указательный контроллер обрабатывает как поведение загрузки по умолчанию, так и представление.
function index() { if($this->input->post('foo')) { // something was POSTed $this->load->library('form_validation'); //validation rules } else { // normal view // } $this->load->view('home'); }
В качестве альтернативы вы можете просто настроить свой index
и submit
контроллер и указать на то же представление, которое определяет, установлены ли validation_errors()
и соответственно заполняются поля формы.
Третий вариант (хакерский): вы можете использовать flashdata, чтобы сохранять ошибки отправки и представленные значения формы для перенаправления обратно в индекс. Что-то вроде этого будет работать:
$this->session->set_flashdata('errors', $validation_errors());
Просто укажите свою форму в своем предложении:
<form method="post" action="/home/submit">
Затем используйте действие submit
чтобы подтвердить свой ввод, прежде чем перенаправлять обратно на действие index
.