2011-11-25 54 views
0

我正在開發一個使用Codeigniter的網站。結構網站很簡單,我有模型中的動態菜單和內容檢索數據庫。然後分配一個方法在Controller中調用它們。錯誤消息不斷回來說數組沒有被定義。

我有奇怪的錯誤消息不斷回來說數組沒有定義。

我可以得到tabPhotos,它包含數據。 查看:

<div id="container"> 
    <div id="photos"> 
     <?php echo "Count: ". count($tabPhotos); ?> 
     <ul> 
      <?php if (!is_array($tabPhotos) || empty($tabPhotos)) :?> 
       <?php return null; ?> 

       <?php foreach ($tabPhotos as $item) : ?> 
        <?php echo "Model: " . $item->url; ?>     
       <?php endforeach; ?> 
      <?php endif; ?> 
     </ul> 
    </div> 
</div> 

控制器:

public function loadMenu($file) { 
    $data['tabMenuItems'] = $this->qdphoto_model->getAllMenuItems(); 
    $this->load->view($file, $data);  
} 


public function loadCategoryPage($file, $category='Book 1') { 
    $data['tabPhotos'] = $this->qdphoto_model->getAllPicturesByCategory($category, 'url, model'); 

    $this->load->view($file, $data);   
} 
+0

你能告訴什麼變量返回未定義的數組?將有助於調試。 – Fredy31

+0

可以請你發佈錯誤消息嗎? – robert

+0

是否應該在那裏有一個<?php else:?>?你在返回NULL之後運行一個foreach循環... – animuson

回答

0

上午我讀這是否正確?如果$ tabPhotos不是一個數組或者它恰好是EMPTY,那麼返回null並繼續運行帶有神祕endif的foreach循環?

 <?php if (!is_array($tabPhotos) || empty($tabPhotos)) :?> 
      <?php return null; ?> 

      <?php foreach ($tabPhotos as $item) : ?> 
       <?php echo "Model: " . $item->url; ?>     
      <?php endforeach; ?> 
     <?php endif; ?> 

難道不應該閱讀:

 <?php if (is_array($tabPhotos) && !empty($tabPhotos)) :?> 
      <?php foreach ($tabPhotos as $item) : ?> 
       <?php echo "Model: " . $item->url; ?>     
      <?php endforeach; ?> 
     <?php endif; ?> 

沒有必要的回空語句。

此外,我相信你可以返回視圖爲字符串。如果要加載多個視圖你當然可以加載您的視圖的任何片段作爲一個字符串...

$string = $this->load->view($file, $data, true); 

請注意,您應該檢查這一點: http://codeigniter.com/user_guide/general/views.html

見底。它說如何作爲字符串返回,除了我習慣於稍微不同的語法感謝自定義控制器等。也許我提供的這個例子並不準確。

相關問題