如何在codeigniter中使用重定向显示验证错误?

Afs*_*hin 15 validation codeigniter validationerror codeigniter-2

我一直处理一个问题.如何在函数中使用重定向设置验证错误?这是我控制器中的代码:

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>';
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我在视图文件中使用的代码:

<? 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>';
}
?>
Run Code Online (Sandbox Code Playgroud)

Afs*_*hin 18

我找到了办法.重定向不会保持数据显示.我使用下面的代码来解决问题:

if($this->form_validation->run() == FALSE)
{
    $this->index();
}
Run Code Online (Sandbox Code Playgroud)


Mun*_*ead 13

我知道这有点晚了,但这种方法对我有用.

如果您使用与加载表单的函数不同的函数验证表单,则可以通过将方法传递给您validation_errors(),将您发送到任何页面:redirect()validation_errors()$this->session->set_flashdata()

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

    $this->session->set_flashdata('error', validation_errors());

    redirect('/');
}
Run Code Online (Sandbox Code Playgroud)

在您希望收到错误或消息的控制器函数中,您可以将它们设置为$data数组,如下所示:

if (!empty($this->session->flashdata('message'))) {

    $data['message'] = $this->session->flashdata('message');
} elseif (!empty($this->session->flashdata('error'))) {

    $data['error'] = $this->session->flashdata('error');
}
Run Code Online (Sandbox Code Playgroud)

在我的观点的顶部,我通常包括:

<?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>';
}?>
Run Code Online (Sandbox Code Playgroud)

使用twitter引导类来格式化消息有助于区分它们.

我包含了messageflashdata,以便您可以查看要发送的任何类型的消息或错误,您可以对所有信息,警告,成功和错误消息进行不同格式化.