如何在表单验证后设置要在codeigniter中查看的段?

时间:2013-03-23 01:21:49

标签: php codeigniter validation codeigniter-url codeigniter-routing

我正在验证由第三个URL段生成的许多视图上的表单。

网址:http://example.com/listings/item/12 12将根据项目进行更改)

我的两个功能都在下面,我的问题是,当验证失败时如何刷新第3段的页面并显示验证错误?

P.S:我已经尝试过redirect()但是验证错误不会保留。

谢谢。


这是“项目”功能

    public function item()
{

    if ($this->session->userdata('is_logged_in'))
    {
        $id = $this->uri->segment(3);
        $this->load->model('listings_model');

        if ($data['things']= $this->listings_model->get_item($id))
        {
            $this->load->view('list/item_view',$data);
        }
    }
    else
    {
         $this->unauth();
    }
}

<小时/> 这是我的验证

    public function get_email()
{

    $this->load->library('form_validation');


        $this->form_validation->set_rules('captcha', 'Captcha', 'required|trim|callback_check_captcha' );


        if ($this->form_validation->run() == FALSE)
        {
           $this->item();
        }
        else
        {
            $this->load->model('listings_model');

            if ($this->listings_model->update_listing())
            {
                echo "Good";
            }

        }
}

2 个答案:

答案 0 :(得分:1)

发生错误时,您可以使用以下代码重定向到您的页面。发生错误时可以将它放在控制器中。

redirect('listings/item/12/error_message_goes_here', 'location');
exit;

在您的视图中检查天气存在第四个参数。如果第四个存在则显示错误

if(!empty($this->uri->segment(4))){

   $this->output->set_output($this->uri->segment(4));

}

所以你的重点是:你重定向并在重定向中传递错误信息,然后在视图中如果存在错误信息则显示它。

答案 1 :(得分:0)

您可以通过设置表单操作属性来设置uri细分。

form_open("controller/method/segments/to/retain", array('method' => 'post'));