Как установить сегмент для просмотра в codeigniter после проверки формы?

Я проверяю форму во многих представлениях, созданных третьим сегментом URL.

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";
            }

        }
}

person overwriter    schedule 23.03.2013    source источник
comment
вы поставили <?php echo validation_errors(); ?> в вашем представлении?   -  person Nikitas    schedule 23.03.2013
comment
Да, но перенаправление избавляется от этих данных   -  person overwriter    schedule 23.03.2013


Ответы (2)


Вы можете использовать следующий код для перенаправления на свою страницу при возникновении ошибки. вы можете поместить его в свой контроллер при возникновении ошибки.

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

И, на ваш взгляд, проверьте погоду, четвертый параметр существует. если четвертый существует, то покажите ошибку

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

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

}

Итак, дело в том, что вы перенаправляете и в своем перенаправлении вы передаете сообщение об ошибке, а затем, если сообщение об ошибке существует, вы его отображаете.

person Muhammad Nasir    schedule 23.03.2013
comment
Спасибо, я установил переменную сеанса, если она прошла, чтобы показать ее. - person overwriter; 06.04.2013

Вы можете установить сегмент uri, установив атрибут действия формы.

form_open("controller/method/segments/to/retain", array('method' => 'post'));
person Subjae Shin    schedule 23.11.2018