Est-il possible d'utiliser la méthode findParentRow()
à partir d'un objet Zend_Paginator? J'essaie du code qui fonctionne correctement sur un objet retourné par fetchAll à partir d'un jeu de résultats DB et fonctionne correctement. Avec l'objet Zend_Paginator, cela ne fonctionne pas.PartialLoop avec l'objet Zend_Paginator Problème
Dans mon contrôleur j'ai:
public function downloadedAction()
{
$images = new Model_ApplicationImages();
$paginator = $images->fetchPaginated();
$paginator->setCurrentPageNumber($this->_getParam('page'));
$this->view->paginator = $paginator;
}
Dans mon modèle j'ai:
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;
}
À mon avis j'ai:
$this->partialLoop()->setObjectKey('paginator');
echo $this->partialLoop('admin/list-downloaded.phtml', $this->paginator);
et dans la partie:
$this->paginator->findParentRow('Model_Application')->name
Il semble bien que la clé de l'objet n'est pas utilisé ou non correctement définis comme dans le var_dump($this->paginator)
partiel est NULL
et les autres valeurs étant passé de la paginator sont là, mais sous $this->key
et non $this->paginator->key
comme ils devraient être
Je ne sais pas a ce qu'elle était avant, mais un partialLoop * peut * avoir un setObjectKey () méthode. Et le modèle doit implémenter 'Iterator', pas Traversable. – nevvermind
@nevvermind, 'PartialLoop' étend' Partial', donc oui il a 'setObjectKey()'. Mais quand vous passez un objet 'partialLoop()' il va d'abord itérer dessus, et seulement * ensuite * utiliser 'setObjectKey()' pour définir l'élément dans chaque partie de la boucle. Comme il utilisait l'adaptateur de pagination 'DbSelect', l'élément résultant était un * tableau * de lignes de base de données pour cette page, pas un objet, donc' setObjectKey() 'ne fonctionnait pas. – mercator
@nevvermind, et le modèle doit être 'Traversable', [c'est ce que vérifie ZF] (http://framework.zend.com/svn/framework/standard/trunk/library/Zend/View/Helper/PartialLoop. php), mais ['Traversable'] (http://www.php.net/manual/en/class.traversable.php) lui-même n'a pas d'interface et doit être implémenté en utilisant' Iterator' ou 'IteratorAggregate'. – mercator