Solución:
Encontré la manera de hacerlo. La redirección no conserva los datos que se mostrarán. Usé el siguiente código para resolver el problema:
if($this->form_validation->run() == FALSE)
{
$this->index();
}
Sé que es un poco tarde, pero este método me funciona de maravilla.
Si está validando su formulario en una función diferente a la que el formulario está cargado, puede enviar su validation_errors()
a cualquier pagina que tu redirect()
pasando el validation_errors()
método para $this->session->set_flashdata()
al igual que:
if ($this->form_validation->run() == FALSE) {
$this->session->set_flashdata('error', validation_errors());
redirect("https://foroayuda.es/");
}
En las funciones de su controlador donde le gustaría que se recibieran sus errores o mensajes, puede configurarlos en el $data
matriz así:
if (!empty($this->session->flashdata('message'))) {
$data['message'] = $this->session->flashdata('message');
} elseif (!empty($this->session->flashdata('error'))) {
$data['error'] = $this->session->flashdata('error');
}
En la parte superior de mis vistas suelo incluir:
<?php if (isset($message)) {
echo '<p class="alert alert-info">'.$message.'</p>';
} elseif (isset($error)) {
echo '<p class="alert alert-danger"><strong>Error: </strong>'.$error.'</p>';
}?>
El uso de clases de arranque de twitter para formatear los mensajes ayuda a diferenciarlos.
Incluí el message
flashdata para que pueda ver cómo sea cual sea el tipo de mensaje o error que desee enviar, puede formatearlos de manera diferente para toda la información, advertencia, mensajes de éxito y error.
Según mi comentario:
function index()
{
$this->load->library('form_validation');
$data = array
(
'Param' => 'Value'
);
if($this->input->post('cellphone', true) !== false)
{
if($this->form_validation->run() != FALSE)
{
echo '<pre>' . print_r($_POST, true) . '</pre>';
}
}
$this->load->view('index', $data);
}
Primero, debe cambiar su formulario para que apunte a la página actual, es decir current_url()
o site_url('controller/index')
.
Cuando vas al index
sin publicar, simplemente omitirá la validación. Al enviar su formulario, ejecutará la validación.
A continuación, puede utilizar el integrado form_error
o validation_errors
métodos para mostrar los errores dentro de su index
vista.