2010-03-19 115 views
1

即時通訊啓動codeigniter項目時出現問題,問題是,當我在控制器中做了一些事情,然後我想要一個頁面來顯示結果,例如:我有一個表單添加一個項目到數據庫,我得到了所有在控制器中的數據並將其保存到數據庫,然後我想(如果一切順利的話)重定向到一個成功味精的主要頁面,我用如何使用codeigniter處理重定向?

$this->load->view('admin', $data); 

問題這樣做,這是該URL保持說管理員/ addItem所以每次頁面刷新它增加了另一個項目,現在我發現:

redirect('admin','refresh'); 

,但這隻能幫助我,當我不需要顯示任何味精,因爲這個功能不允許發送$數據變種。 任何想法? 也許這是很容易修復,但我無法找到一種方法來處理應用程序的流程我想要的方式,任何幫助是apreciated。 感謝;)

+0

3答案工作,我選擇了一個來自dyllon只是因爲我喜歡它:P感謝傢伙,很好的答案; D – 2010-03-20 01:42:38

回答

3

Flashdata是你的朋友,這個鏈接和大約一半的頁面,你會發現flashdata的文檔。

基本上,如果您的表單功能成功,您可以使用您的成功信息設置flashdata,$this->session->set_flashdata('success', 'You successfully did something, yay!'); 現在重定向到您的管理頁面。 redirect('admin','refresh');在管理頁面檢查現有flashdata,並將它顯示給用戶

+0

哦,這看起來像我需要,我要檢查它; D – 2010-03-19 21:36:08

1

可以很容易修復,也可能是也難以解決, 看看有關URI的文檔路由http://codeigniter.com/user_guide/general/routing.html

在我的測試程序,我用這個瓦爾

$route['default_controller'] = "main"; 
$route['scaffolding_trigger'] = ""; 

主要是一個控制器,所以如果你訪問你的網站,它首先調用控制器主

在你的情況下,我會用這樣的東西

$route['admin/:num'] = "catalog/products"; 

這將重定向到管理員的任何接入/ *到目錄/產品

有創意;-)

0

我認爲你應該使用這種形式給出:

而不是調用管理視圖或重定向的頭,你應該從帖子發送如果$ _POST變量不爲空,意味着你應該將數據保存在調用其他函數的數據庫中,或者在一個模型的示例中:($ this-> save_data_in_database(); )並將其結果再次發送到視圖。 如果$ _POST變量爲空,則應調用管理視圖並將消息的數據作爲NULL發送。

我送一個例子波紋管:

查看管理:(直接郵寄到控制器的管理功能)

<html> 
(...) 
<body> 

<?php echo $message_response; ?> 

<form method="post" action="<domain>/index.php/admin" /> 
    <imput (...)  
</form> 

</html> 

控制器:

function admin() 
{ 
    if (isset($_POST['fieldname'])) 
     $data['message_response']=$this->save_data_in_database($params...); 
    else 
     $data['message_response']=NULL;  

    $this->load->view('admin', $data); 
} 


function save_data_in_database($params...) 
{ 

(save data to database etc...) 

return (...message_to_display...); 

} 

最好的問候,
Pedro

+0

這看起來不錯,現在即時嘗試flashdata的東西,如果沒有工作,就像我想要我會嘗試這個,TY;) – 2010-03-19 23:56:42