2012-11-01 128 views
0

我不能傳遞變量視圖頁面未定義的變量

這是我的控制器代碼

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Management extends CI_Controller { 

     public function __construct() 
     { 
      parent::__construct(); 
      if($this->session->userdata('level') != 1){ 
       redirect(''); 
      } 
     } 


     public function hotels() 
     { 

       $this->load->model('model_hotels'); 

       $ss['most_view_hotels'] = '23'; 
       $this->load->view("management/header_mng_view"); 
       $this->load->view('management/hotels_mng_view' , $ss , true); 
       $this->load->view("management/footer_mng_view"); 
     } 

} 

這是錯誤

一個PHP錯誤遇到

嚴重性:通知

消息:未定義變量:most_view_hotels

文件名:管理/ hotels_mng_view.php

行號:22

hotels_mng_view.php

<?php 
    echo $most_view_hotels; 
    foreach($most_view_hotels as $value): 
?> 
    <div class="row"> 
    <div class="cell en">adsf</div> 
    <div class="cell en">1212</div> 
    <div class="cell en">12</div> 
    <div class="cell en">32</div> 
    </div> 
<?php endforeach;?> 
+2

顯示管理/ hotels_mng_view.php – xdazz

+0

xdazz我添加了代碼 – bosami

+0

由於'most_view_hotels'不是數組,所以'foreach'應該顯示錯誤。但它仍然不是你的帖子中給出的。 – air4x

回答

1

在你的控制器:

$ss['most_view_hotels'] = '23'; 
$this->load->view("management/header_mng_view"); 
$this->load->view('management/hotels_mng_view',$ss); 
$this->load->view("management/footer_mng_view"); 

在您的視圖:

<?php echo $most_view_hotels?> 
+0

這是正確的。 – envysea

+0

對不起,錯誤仍然.. – bosami

+0

我沒有檢查這在我的服務器上正確運行。但是我看到你現在已經將視圖代碼添加到了問題中。 $ most_view_hotels是一個標量值(23),那麼爲什麼你在視圖中把它當作一個數組呢? – mtmacdonald

0

在你的模板,你會參考該項目爲...

$most_view_hotels 

所以我們需要驗證這是你在視圖中做什麼management/hotels_mng_view.php

+0

這就是他在做的。 「未定義變量:most_view_hotels」問題是使用第三個「true」參數。這將視圖返回爲字符串,而不是將視圖發送到瀏覽器。 http://codeigniter.com/user_guide/general/views.html – envysea

0

上笨說明書上說:

There is a third optional parameter lets you change the behavior of the function 
so that it returns data as a string rather than sending it to your browser. 
This can be useful if you want to process the data in some way. If you set 
the parameter to true (boolean) it will return data. 
The default behavior is false, which sends it to your browser. 

這意味着,您的訂單

$this->load->view('management/hotels_mng_view' , $ss , true); 

實際上將該視圖的結果作爲字符串返回給php,而不是發送給瀏覽器。

對您的實際問題(未定義變量)的回答依賴於management/hotels_mng_view.php,可能是錯字。

+0

謝謝,錯誤仍然在代碼中 – bosami

0

我認爲問題出在第三個參數,即true

隨着笨文件說:

There is a third optional parameter lets ..... 
Remember to assign it to a variable if you want the data returned 

並在代碼中你沒有分配,返回的數據的任何代碼。 我建議你嘗試這樣的事情:

public function hotels() 
     { 

      $this->load->model('model_hotels'); 
      $data = array(); 
      $ss['most_view_hotels'] = '23'; 
      $data['header'] = $this->load->view("management/header_mng_view",,true); 
      $data['body'] = $this->load->view('management/hotels_mng_view' , $ss , true); 
      $data['footer'] = $this->load->view("management/footer_mng_view"); 
      $this->load->view("template",$data); 
     } 

/*template view file*/ 
<?php 
    echo $header; 
    echo $body; 
    echo $footer; 
?> 

希望這會有所幫助。