【问题标题】:Zend Helper design usage exampleZend Helper 设计使用示例
【发布时间】:2010-12-06 22:40:52
【问题描述】:

我有一个循环遍历返回狗信息的数据库表的视图。

这是控制器:

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]; 

这很好用。

我现在需要添加额外的狗特定信息,但该狗信息不是我可以从 Dog General Info 表中获得的信息,它需要一些连接,并在最后检索一个数字。

public function retrieveVerySpecificInformation($dogId) {

return $numberSpecificForThatDog

};

我(相信)我需要一个帮手来做这些计算,我的问题是:

我应该在 for 所在的视图上调用这个助手,是吗? 但是,我怎样才能以我为给定的狗 A 获得的方式连接这些信息,两者: 狗的一般信息和那个特定的狗 A 的号码?

我的意思是,我们如何才能在此处正确集成助手?

我可以帮忙吗?

提前致谢, 内存

【问题讨论】:

    标签: php zend-framework helper


    【解决方案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
    

    【讨论】:

    • 我同意你的建议。那么,retrieveAllDogs() 将返回所有信息吗?问题是:如何在一个方法上连接来自两个不同查询的数据,并且每个查询都有很多连接?也许我应该使用两种方法,一种将它们放在一起? - 您能否升级您的推荐以适应类似情况?提前非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多