2012-11-01 44 views
2

这很简单我猜,但我是codeigniter新手,所以请帮助。我有一个表单页面,它提取数据并在提交时将数据存储在数据库中。然后我尝试了两种方法来备份重定向到主页:codeigniter提交后如果再次刷新提交

first: $this->load->view('home'); 

second: redirect('/login/form/', 'refresh'); 

他们成功地重定向或加载主页,但网址仍然/属性/ new_property这是数据输入的视图。同样,当我点击主页上的刷新与上述网址,数据被重新提交,所以在数据库中的多个记录。我怎样才能重定向到家中,并使url属性/ home?

感谢

回答

0

您需要的网址助手使用

redirect('/home') 

这是CI重定向的正确方法。 http://ellislab.com/codeigniter/user_guide/helpers/url_helper.html

  • 第二参数。是不是100%所需

要加载该助手就可以使用$this->load->helper('url'); 还是把它写你的autoload.php在config文件夹中(这样一来就会被加载到所有页面)内。

例如这里是我的网站上的一个简单的子页面。

public function save_tips(){ 
    if($this->input->post('save_tips')){ 
     //Form validation and contact with model 
     $res = $this->model->save_tips(); 
     if(count($res['errors'])==0){ //no errors means success 
      redirect('/my_tips'); 
     } else{ 
     $errors = $res['errors']; 
     } 
    } 

    $data = array(); 

    if(isset($errors)) { 
     $data["errors"] = $errors; 
    } 

    $this->load->view('save_tips',$data); 
} 
+0

我无法使用重定向,因为头已被修改。 –

+0

只是把它放在它之前?为什么你需要在重定向行之前设置标题? – Svetoslav

+0

它是说我的模型正在发送输出,所以在这种情况下,“放在它之前”是什么意思? –

0

$this->load->view()只会加载视图,网址不会改变。 当你使用redirect()它会重定向到一个不同的页面,你的网址将会改变。

对于您的解决方案您可以在插入前选择要在模型中插入的数据,如果存在,则不要运行插入查询,只需重定向到其他页面。

1

$this->session->set_flashdata('message', 'New Post has been added');
redirect('somefunction', 'refresh')
set_flashdata保存成功将帮助你消灭你提交的数据重定向将改变您的网址后。