2012-12-09 24 views
0

創建和傳遞數據數組:變量已通過,但仍拋出異常?

public function home() 
{ 


    $data['page'] = 'home'; 
    $data['table'] = 'pageData'; 
    $data['temp'] = 'temp_1'; 

    $this->template($data); 


} 


    public function template($data) 
{ 

    $this->load->model("model_get"); 


    $data['results'] = $this->model_get->getData($data); 

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


} 

這是模板視圖:

<?php 

$this->load->view('header'); 

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

$data['results'] = $results; 

$this->load->view($temp, $data); 

$this->load->view('footer'); 

?> 

它在拋出異常爲未定義的變量:

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

但仍加載查看並完成其中的所有if語句,並從存儲在$temp中的名稱加載視圖。

它爲什麼會拋出異常?

+1

顯然您需要檢查數據變量並查看它返回的內容。使用print_r – DrinkJavaCodeJava

+0

免責聲明它的undefined – John

+0

它所做的只是回聲說它是未定義的,但它使用了變量並且在xamp方面工作得很好,我確實在導航菜單中添加了分隔符,它在錯誤之後並不準確,但它直到錯誤,這是關閉服務器,並像我說的,它仍然加載內容 – John

回答

0

你還沒有在該視圖中填充$ data來加載第二個視圖。你的代碼太模糊地命名,以真正理解它應該做什麼,但讓我們分解它。

public function home() 
{ 
$data['page'] = 'home'; 
$data['table'] = 'pageData'; 
$data['temp'] = 'temp_1'; 
$this->template($data); 
} 


public function template($data) 
{ 
$this->load->model("model_get"); 
$data['results'] = $this->model_get->getData($data); 
//I assume getData takes a table name and returns all the data 
//This only works because you're taking all the data passed from the first function 
//in the function above. 
$this->load->view('template', $data); 
} 


<?php 
$this->load->view('header'); 
$this->load->view('nav', $data); 
//At this point $data is empty. You have available $results, $page, $table and $temp 
//because they were passed from the template function above. 
$this->load->view('nav', $results); 
//The line above is what it appears you need, rather than $data. 
$data['results'] = $results; 
//You've repopulated $data here but now all it contains is $results. 
$this->load->view($temp, $data); 
$this->load->view('footer'); 
?> 

什麼你誤解爲$的數據不具有持續性,當你通過加載一個視圖,$數據作爲第二個參數把它傳遞到視圖它分解成它的組成部分,所以$數據本身是沒有可用時間更長