如何使用Zend Framework部分循环与对象

时间:2011-01-25 14:21:22

标签: zend-framework zend-view

我很困惑如何使用partialLoop

目前我使用

foreach ($childrenTodos as $childTodo) {
  echo $this->partial('todos/_row.phtml', array('todo' => $childTodo));
} 

$childrenTodosDoctrine\ORM\PersistantCollection$childTodoApplication\Models\Todo

我试过

echo $this->partialLoop('todos/_row.phtml', $childrenTodos)
          ->setObjectKey('Application\Models\Todo');

但是当我尝试访问我的Todo类的属性/函数时,我似乎无法在我使用Zend_View::myFunction()时调用未定义的方法$this->myFunction()。部分或如果我尝试$this->todo->getName()我得到“在非对象上调用成员函数getName()”。我如何使用partialLoops?

2 个答案:

答案 0 :(得分:8)

试试这个

echo $this->partialLoop('todos/_row.phtml', $childrenTodos)
      ->setObjectKey('object');

然后在你的部分中你可以像这样访问对象

$this->object

object是将对象分配给

的变量的名称

如果您可以访问视图对象,也可以在Bootstrap或其他初始化类中执行一次

protected function initPartialLoopObject()
{
    $this->_view->partialLoop()->setObjectKey('object');

    $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
    $viewRenderer->setView($this->_view);
}

答案 1 :(得分:1)

在尝试使用建议的语法时,我也遇到了“在非对象上调用函数”错误,似乎他们在更高版本的Zend Framework上改变了一些东西。以下适用于ZF1.12:

echo $this->partialLoop()
->setObjectKey('object')
->partialLoop('todos/_row.phtml', $childrenTodos);