是否有可能从Zend_Paginator的对象内使用findParentRow()
方法?我正在尝试一些在fetchAll从数据库结果集返回的对象上正常工作的代码,并且工作正常。使用Zend_Paginator对象,它不起作用。PartialLoop与Zend_Paginator的对象问题
以我控制器我有:
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( ) 方法。模型必须实现'Iterator',而不是Traversable。 – nevvermind 2011-10-22 05:36:19
@nevvermind,'PartialLoop'扩展'Partial',所以是的,它确实有'setObjectKey()'。但是,当你传递一个对象,以'partialLoop()'它会首先遍历的是,只有* *然后使用'setObjectKey()'在环路设置每个部分的项目。因为他用'DbSelect'分页程序适配器,产生的项目是一个*数组*该页面,而不是对象的数据库行,所以'setObjectKey()'没有工作。 – mercator 2011-10-22 16:01:07
@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 2011-10-22 16:02:19