Возможно ли использовать метод findParentRow()
из объекта Zend_Paginator? Я пытаюсь использовать код, который отлично работает на объекте, возвращаемом fetchAll, из набора результатов DB и отлично работает. Однако с объектом Zend_Paginator он не работает.PartialLoop с Zend_Paginator Object Issue
В моем контроллере я есть:
public function downloadedAction()
{
$images = new Model_ApplicationImages();
$paginator = $images->fetchPaginated();
$paginator->setCurrentPageNumber($this->_getParam('page'));
$this->view->paginator = $paginator;
}
В моей модели у меня есть:
public function fetchPaginated()
{
$select = $this->select()
->from($this->_name)
->where('status = ?','approved')
->where('downloaded = ?','0');
$adapter = new Zend_Paginator_Adapter_DbSelect($select);
$paginator = new Zend_Paginator($adapter);
$paginator->setItemCountPerPage(10);
return $paginator;
}
С моей точки зрения я есть:
$this->partialLoop()->setObjectKey('paginator');
echo $this->partialLoop('admin/list-downloaded.phtml', $this->paginator);
и парциальное:
$this->paginator->findParentRow('Model_Application')->name
Оказывается, однако, что ключевой объект не используется или не установлен должным образом в рамках частичного var_dump($this->paginator)
является NULL
и другие значения, которые передаются от постраничной навигации будут там, но под $this->key
и не $this->paginator->key
как они должны быть
Я не знаю, есть это было раньше, но partialLoop * может * быть setObjectKey (). И модель должна реализовать «Итератор», а не «Траверсируемый». – nevvermind
@nevvermind, 'PartialLoop' расширяет' Partial', так что да, у него есть 'setObjectKey()'. Но когда вы передаете объект 'partialLoop()', он сначала перебирает это, и только * then * использует 'setObjectKey()' для установки элемента в каждом частичном в цикле. Поскольку он использовал адаптор paginator 'DbSelect', результирующий элемент был * массивом * строк базы данных для этой страницы, а не объектом, поэтому' setObjectKey() 'не работал. – mercator
@nevvermind, и модель должна быть «Traversable», [это то, что ZF проверяет] (http://framework.zend.com/svn/framework/standard/trunk/library/Zend/View/Helper/PartialLoop. php), но ['Traversable'] (http://www.php.net/manual/en/class.traversable.php) сам по себе не имеет интерфейса и должен быть реализован с использованием' Iterator' или 'IteratorAggregate'. – mercator