UPDATE
Вы хотите опубликовать форму, проверить ее, затем снова показать форму с ошибками проверки, если проверка не пройдена, или показать что-то совершенно иное, если проверка прошла успешно.
Лучший способ сделать это - отправить форму обратно в себя. Таким образом, действие вашей формы будет action=""
. Таким образом, в вашем методе вы можете проверить, была ли отправлена форма, и определить, что там делать:
// in my form method
if ($this->input->post('submit')) // make sure your submit button has a value of submit
{
// the form was submitted, so validate it
if ($this->form_validation->run() == FALSE)
{
$this->load->view('myform');
}
else
{
$this->load->view('formsuccess');
}
}
else
{
// the form wasn't submitted, so we need to see the form
$this->load->view('myform');
}
СТАРЫЙ ОТВЕТ
Вы всегда можете передать текущий URI в скрытое поле в форме:
<input name="redirect" type="hidden" value="<?= $this->uri->uri_string() ?>" />
А затем перенаправить в случае сбоя проверки:
redirect($this->input->post('redirect'));
Или вы можете установить URL перенаправления в переменной сеанса flashdata:
// in the method that displays the form
$this->session->set_flashdata('redirect', $this->uri->uri_string());
А затем перенаправить в случае сбоя проверки:
redirect($this->session->flashdata('redirect'));