codeigniter как мне передать значение после завершения обновления и перенаправить на Index()

#php #codeigniter #url-routing

#php #codeigniter #url-маршрутизация

Вопрос:

как мне передать TRUE / FALSE после завершения обновления и перенаправить на Index () и установить

условие $viewdata[‘show’] для добавления моего HTML-кода или что-то в этом роде

Мой контроллер

 class Description extends CI_Controller {

    public function index()
    {
        $viewdata['content']=$this->General_model->get_page_uri();

        $viewdata['show']=; //where i want to get value when update() method 
                            //pass value so i can show sucess / error message

        $this->load->view("backend/content_view",$viewdata);
    }
    public function update()
    {
        $title=$this->input->post('txttitle');
        if($title != '')
        {
            if(!$this->update_model->update_all($title))
            {
                return FALSE; 
            }

            return TRUE;
        }
        redirect('Admin/Description');
    }

}
  

Моя модель

 public function update_all($data)
    {
        $this->db->set('desc',$data)
            ->where('desc_id','1');
        if(!$this->db->update('tbl_desc'))
        {
            return FALSE;
        }

        return TRUE;

    }
  

@Ritesh d joshi это работает, но я сталкиваюсь с проблемой, которую я не могу изменить, когда ошибка обновления я проверяю, чтобы изменить имя моего поля на другое, чтобы проверить возврат false;

Администратор / Описание / обновление

он показывает мне «Произошла ошибка базы данных» с помощью Codeigniter

я не хочу, чтобы это показывало, что я хочу сохранить свою страницу администратора такой же, просто предупредите об ошибке сообщения nomol, которую я установил, чтобы не показывать много информации об ошибке. как я могу предотвратить это или это можно сделать только с помощью Ajax-запроса?

Контроллер index ()

     if($show_ses === '0')
            {
                 $viewdata_result = $this->General_model->rk_alert_ok('Successfully Update');
                 $this->session->set_flashdata('show', 'false');

            }elseif($show_ses === '1'){

                 $viewdata_result=$this->General_model->rk_alert_no('Fail Update Request');
                 $this->session->set_flashdata('show', '');
            }
  

Обновление контроллера ()

     if(!$this->update_model->update_all($title))
    {

        $this->session->set_flashdata('show', '1');
        //1= false
    }else{
        $this->session->set_flashdata('show', '0');
        //0=true
    }
  

Комментарии:

1. Если вы хотите показать какое-то сообщение об успешном завершении, я думаю, вы можете использовать $this->session-> flashdata(‘сообщение’)

2. @SunilPachlangia означает ли это, что я использую $this->session-> flashdata(‘message’) для замены TRUE / FALSE в моем методе update() и перенаправления на index , а $viewdata[‘show’]= этот сеанс? я прав ?

Ответ №1:

Используйте функцию PHP header() .

 header('Location: your_URL');
  

Обновить:

В CI вы можете использовать redirect() функцию, этот документ поможет вам понять: http://www.codeigniter.com/user_guide/helpers/url_helper.html

Комментарии:

1. redirect() это другое решение. 🙂

2. Да. Честно говоря, не заметил, что он использовал codeigniter. 🙂

3. я обновил ваш ответ, вы также можете проверить пример в моем ответе.

Ответ №2:

Пожалуйста, попробуйте это

  class Description extends CI_Controller {

        public function index()
        {
            $viewdata['content']=$this->General_model->get_page_uri();

           $show= $this->session->flashdata('show');

        if($show){
               // Here is code for show  and message
              $viewdata['show']="message";
              $this->session->set_flashdata('show', 'false');
         }  


            $this->load->view("backend/content_view",$viewdata);
        }
        public function update()
        {
            $title=$this->input->post('txttitle');
            if($title != '')
            {
                if(!$this->update_model->update_all($title))
                {
                    return FALSE; 
                }
                $this->session->set_flashdata('show', 'true');

                return TRUE;
            }
            redirect('Admin/Description');
        }

    }
  

Ответ №3:

Вы можете использовать перенаправление в update() качестве:

 public function update()
{
    $title = $this->input->post('txttitle');
    if($title != '')
    {
      $status = $this->update_model->update_all($title);        
      if($status){
        redirect(base_url().'index?show=1');
      }
      else{
        redirect(base_url().'index?show=0'); 
      }
    }
    redirect('Admin/Description');
}
  

затем вы можете проверить статус в index() виде:

 public function index()
{
    $viewdata['content']=$this->General_model->get_page_uri();
    if(isset($this->input->post('show')) amp;amp; intval($this->input->post('show')) == 0){
      $viewdata['show'] = 1; // if success than show 1
    }
    else{
      $viewdata['show'] = 0; // if error than show 0
    }                   
    $this->load->view("backend/content_view",$viewdata);
}
  

Ответ №4:

Вы можете использовать функцию заголовка, а для ее обнаружения вы также можете передать параметры в GET Url, как показано ниже.

По умолчанию установите статус как FALSE. И вы можете обновить статус в соответствии с вашими условиями либо на FALSE, либо НА TRUE.

 public function update()
        {
            $status = false;
            $title=$this->input->post('txttitle');
            if($title != '')
            {
                if(!$this->update_model->update_all($title))
                {   
                    $status = FALSE;
                    return FALSE; 
                }
                $this->session->set_flashdata('show', 'true');
                 $status = TRUE;
                return TRUE;

            }
            header('Location: abc.php?status='.$status);
        }
  

Надеюсь, это сработает, пожалуйста, дайте мне знать в случае каких-либо недоразумений.