How to show validation errors using redirect in codeigniter?

Afshin picture Afshin · Jun 14, 2012 · Viewed 33.4k times · Source

I have been dealing with a problem for a while. How can I set the validation errors using redirect in a function? This is the code I have in my controller :

function send()
{
    $this->form_validation->set_rules('e-mail', 'Email', 'trim|required|valid_email');
    $this->form_validation->set_rules('cellphone', 'Cellphone Number', 'trim|required|is_natural');
    $this->form_validation->set_message('required', '%s is required.');
    $this->form_validation->set_message('valid_email', '%s is not a valid Email Address');
    $this->form_validation->set_message('is_natural', '%s can only contain numbers.');
    $this->form_validation->set_error_delimiters('<li>', '</li>');

    if($this->form_validation->run() == FALSE)
    {
        redirect ('/');
    }
    else
    {
        echo '<pre>';
        print_r($_POST);
        echo '<pre>';
    }
}

And this is the code I use in my view file:

<? if (validation_errors())
{   
echo '<div id="validation_errors" title="Error:">';
echo '<div class="response-msgs errors ui-corner-all"><span>Errors:</span><br /><ul>';
echo validation_errors();
echo '</ul></div>';
echo '</div>';
}
?>

Answer

Afshin picture Afshin · Jun 14, 2012

I found the way to do it. Redirecting does not keep the data to be shown. I used the code below to solve the problem:

if($this->form_validation->run() == FALSE)
{
    $this->index();
}