codeigniter如何在更新完成后传递Value并重定向到Index()

时间:2016-10-10 06:13:25

标签: php codeigniter url-routing

如何在完成更新后传递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 thz它的工作,但我面临的问题,我无法修改更新错误我测试将我的字段名称更改为其他测试返回false;

管理员/说明/更新

它显示Codeigniter发现'数据库错误'

我不希望这显示我想保持我的管理页面仍然相同只是警报nomol消息错误,我已设置不显示许多信息错误。我怎么能阻止这个,或者只能通过Ajax请求来完成?

控制器索引()

    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', '');
            }

Controller update()

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

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

4 个答案:

答案 0 :(得分:2)

使用PHP header()函数。

header('Location: your_URL');

<强>更新

在CI中,您可以使用redirect()功能,本文档将帮助您理解:http://www.codeigniter.com/user_guide/helpers/url_helper.html

答案 1 :(得分:1)

请试试这个

 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');
        }

    }

答案 2 :(得分:1)

您可以在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')) && 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);
}

答案 3 :(得分:1)

您可以使用标题功能,并检测它,您也可以在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);
        }

希望这会有效,如果有任何混淆,请告诉我。