2011-01-25 56 views
6

我很困惑如何使用partialLoop如何使用Zend Framework的使用对象

目前我使用

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

$childrenTodosDoctrine\ORM\PersistantCollection部分环,$childTodo是一个Application\Models\Todo

我想这样做

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

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

回答

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

我不知道为什么我仍然得到调用函数对非对象错误,我的代码http://pastebin.com/z07phdHj。奇怪的是当我尝试`echo get_class($ this-> todo)`我得到`Zend_View` – 2011-01-25 14:35:36

1

在尝试建议的语法时,我也有“调用函数对非对象”错误,好像他们已经改变了Zend Framework的更高版本。以下为我在ZF1.12上的作品:

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