2012-07-18 80 views
0

我在控制器中使用以下代碼。但數據['msg']沒有被傳遞給視圖文件。無法在代碼視圖中訪問控制器數據

代碼:

class Operator{ 


public function view ($page) 
{ 
    if (! file_exists('application/views/pages/'.$page.'.php')) 
    { 
     // Whoops, we don't have a page for that! 
     show_404(); 
    } 

    $data['title'] = $this->getTitle($page); 
    $this->load->view('templates/header', $data); 
    $this->load->view('pages/'.$page, $data); 
    $this->load->view('templates/footer', $data); 

} 
public function create_company() 
{ 
     // some code 
    $data['msg1']='my mesg'; 
    redirect('operator/view/operator_success','refresh'); 
} 
}; 

當operator_success(視圖頁)裝載它顯示錯誤消息:變量 '$ MSG1' 未被定義。

+0

你有一個錯字:data ['msg1'] ='my mesg'; => $ data ['msg1'] ='我的mesg'; – Mahn 2012-07-18 17:30:52

+0

您可能希望檢查類'Operator'中'$ data'的作用域。你應該使用一個類變量。另外,'Operator'應該可以擴展'CI_Controller'。 – 2012-07-18 17:31:30

+0

除非您使用會話,否則如果您正在進行重定向,則數據不可能持續存在。 – Mahn 2012-07-18 17:33:48

回答

0

重定向後則不能使用該變量或陣列。而應將變量設置爲保留在會話或CodeIgniter Flash Data中。

class Operator 
{ 

    public function view($page) 
    { 
     if (!file_exists('application/views/pages/' . $page . '.php')) { 
      // Whoops, we don't have a page for that! 
      show_404(); 
     } 

     $data['title'] = $this->getTitle($page); 
     $this->load->view('templates/header', $data); 
     $this->load->view('pages/' . $page, $data); 
     $this->load->view('templates/footer', $data); 
    } 

    public function create_company() 
    { 
     // some code 
     $data['msg1'] = 'my mesg'; 

     // DO THIS 
     $this->session->set_flashdata('msg1', 'my mesg'); 
     // OR 
     $this->session->set_userdata('msg1', 'my mesg'); 
     redirect('operator/view/operator_success', 'refresh'); 
    } 

} 

重定向後,您可以簡單地調用flashdata。

echo $this->session->flashdata('msg1'); 
// OR 
echo $this->session->userdata('msg1'); 

您必須在使用之前初始化會話,自動加載會話庫或手動加載。

[1]自動加載會話庫(配置/ autoload.php)

$autoload['libraries'] = array('session'); 

[2]手動加載庫

$this->load->library('session'); 

看到更多的有關會話和閃存數據here。希望這可以幫助你。謝謝!!

+0

我是CodeIg的新手。如果沒有設置會話會怎麼樣。這會創建一個新的會話嗎?或者如果會話已經設置了會怎樣?會使用同一個會話嗎? – Sarthak 2012-07-18 18:14:00

+0

@Sarthak,我更新了答案。您必須加載會話庫才能使用userdata或flashdata。 – 2012-07-18 18:23:10

1

這是因爲data['msg1']已設置,則頁面被重定向(不攜帶帶有它的data數組)。

如果你想data堅持,那麼你需要使用sessionscookies

0

你有重定向設置變量之後所以必須設置此消息或者在會議(「閃光」消息)或操作者/視圖/控制器operator_success上

相關問題