2010-12-06 57 views
1

我有一個視圖,循環返回狗信息的數據庫表。Zend幫助器設計使用示例

這裏的控制器:

public function listAction() 
{ 
    $dogDao = new DogDao(); 
    $this->view->infoDog = $dogDao->retrieveDogInfo(); 
} 

在視圖我可以檢索這樣的狗信息:

<?php for($i = 0; $i < 30; $i++){ ?> 
if(isset($this->infoDog[$i])){ 
    $dog = $this->infoDog[$i]; 

這工作得很好。

我現在需要添加額外的狗的具體信息,但該狗的信息,是不是我可以從狗通用信息表中獲得的信息,它需要一些連接,並在最後檢索一個數字。

public function retrieveVerySpecificInformation($dogId) { 

return $numberSpecificForThatDog 

}; 

我(相信)我需要一個幫手,做這些計算,我的問題是:

我應該把這個助手上,其中駐留是有何看法? 但我怎樣才能連接這些信息的方式,我得到給定的狗A,都: 一般的狗的信息和數量特定的那隻特定的狗A?

我的意思是,我們該如何正確地整合助手呢?

我可以幫忙嗎?

由於提前, MEM

回答

1

你可以叫視圖助手們會喜歡這個

<?php echo $this->displayDog('A', 'black'); ?> 

而且你的視圖助手應該像

class Zend_View_Helper_Dog 
{ 
    public function displayDog($type, $color) 
    { 
     $dog = new Model_DbTable_Dog(); 
     return $dog->getDog($type, $color); 
    } 
} 

這是OK調用視圖助手從幾個數據庫操作的循環,但你正在爲每隻狗進行自定義數據庫查詢(個30查詢不推薦

建議

您應該獲取所有的信息你需要在你的控制器,並把它傳遞給你的意見,以後可以使用任何視圖助手來打扮。

public function listAction() 
{ 
    this->view->infoAllDog = $dogDao->retrieveAllDogs(); 
    // including joined info + all dogs you may need in your view 
+0

我同意你的建議。那麼,retrieveAllDogs()將會返回所有的信息嗎?問題是:如何在一個方法上連接來自兩個不同查詢的數據,並且每個查詢都有很多連接?也許我應該用兩種方法,一種將它們放在一起? - 您能否升級您的建議以適應類似的情況?提前致謝。 – MEM 2010-12-06 23:39:46