是否有可能從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