2012-11-01 82 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保存成功將幫助你消滅你提交的數據重定向將改變您的網址後。