Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
J'ai lu différents tutoriaux sur l'utilisation de la classe Zend_Paginator, j'ai copié et adapté le code des tutoriaux, mais je n'arrive pas à transmettre l'instance de la classe Zend_Paginator à la vue... cela lève l'exception suivante:
Fatal error: Uncaught exception 'Zend_View_Exception' with message 'No paginator instance provided or incorrect type' in D:\Applis\Inetsrv\ApplisZend\PepperPortal\library\Zend\View\Helper\PaginationControl.php:99 Stack trace: #0 [internal function]: Zend_View_Helper_PaginationControl->paginationControl(NULL, 'Sliding', 'patials/search-...') #1 D:\Applis\Inetsrv\ApplisZend\PepperPortal\library\Zend\View\Abstract.php(318): call_user_func_array(Array, Array) #2 [internal function]: Zend_View_Abstract->__call('paginationContr...', Array) #3 D:\Applis\Inetsrv\ApplisZend\PepperPortal\application\default\views\scripts\partials\body_resource_bis(2).phtml(44): Zend_View->paginationControl(NULL, 'Sliding', 'patials/search-...') #4 D:\Applis\Inetsrv\ApplisZend\PepperPortal\library\Zend\View.php(107): include('D:\Applis\Inets...') #5 D:\Applis\Inetsrv\ApplisZend\PepperPortal\library\Zend\View\Abstract.php(787): Zend_View->_run('D:\Applis\Inets...') #6 D:\Applis\Inetsrv\ApplisZend\PepperPortal\application\default\views\scripts\index\i in D:\Applis\Inetsrv\ApplisZend\PepperPortal\library\Zend\View\Helper\PaginationControl.php on line 99
pourtant, j'ai bien suivi les étapes trouvées dans les tutoriaux, dans mon contrôleur j'ai mis :
$selectObject = $this->getSearchModel()->selectPaginatedSearch($i, $operators, $field_names, $search_values); // $paginator = Zend_Paginator::factory($selectObject); // Zend_View_Helper_PaginationControl::setView($this->view); // $paginator->setCurrentPageNumber($this->getRequest()->getParam('page_number', 1)); // $paginator->setItemCountPerPage($this->getRequest()->getParam('per_page', 50)); // $this->view->paginator = $paginator;
dans ma vue (patiel de vue), j'ai mis :
<table> <tr> <th> <?php echo $this->paginationControl($this->paginator, 'Sliding', 'patials/search-pagination.phtml'); ?> </th> [...] </tr> <?php foreach ($this->paginator as $row) : ?> <tr> <td> <a href="myURL" [...] > <?php echo ($row['colName']); ?> </a> </td> [...] </tr> <?php endforeach; ?> </table>
et dans le partiel 'search-pagination.phtml', j'ai mis :
<?php if ($this->pageCount) : ?> <div class="pagination" > <?php if (isset($this->previous)) : ?> <a href="<?php echo ($this->url(array('page' => $this->previous))); ?>">« Prev</a> - <?php endif; ?> <?php // Page Links foreach ($this->pageInRange as $page) : ?> <a href="<?php echo ($this->url(array('page' => $page))); ?>" <?php if ($page == $this->current) : ?> id="selected" > <?php endif; echo ($page); ?> </a> <?php endforeach; ?> <?php if (isset($this->next)) : ?> - <a href="<?php $this->url(array('page' => $this->next)); ?>" >Next ></a> <?php endif; ?> </div> <?php endif; ?>
Si quelqu'un avait une idée pour me débloquer ?...
P.S.: j'ai même essayé d'assigner l'objet '$paginator' du contrôller avec 1 '$this->view->assign('paginator', $paginator', mais cela ne marche pas mieux. Et la version de Zend que j'utilise est la 1.7.2 (cela fait pareil avec la 1.6.2)
Hors ligne
Salut,
Si tu essaies en retirant cette ligne :
Zend_View_Helper_PaginationControl::setView($this->view);
??
A+ benjamin.
Hors ligne
malheureusement, cela ne change rien, merci tout de même pour ton aide... :-(
Hors ligne
j'irais même plus loin, si je ne met pas la ligne :
Zend_View_Helper_PaginationControl::setView($this->view);
cela ne fonctionne pas non plus, et là l'exception me dit que le view helper 'paginationControl' n'est pas 'registered'... :-(
Si quekqu'un a déjà rencontré le problème, cela m'arrangerais parce que là je suis totalement bloqué, et je ne vois vraiement pas comment m'en sortir... J'ai même essayé de transmettre l'objet paginator via la Registry, et c'est la même, il n'arrive pas à retrouver l'instance de l'objet...
Hors ligne
Et sinon tu es sûr que ton $selectObject est bon ? tu as essayé de le tracer pour voir ce qu'il y a dedans ?
Tu as peut-être une erreur ailleurs.
Par ce qu'on peut voir dans l'erreur qu'il ne reçoit pas d'objet paginator mais NULL :
Zend_View_Helper_PaginationControl->paginationControl(NULL, 'Sliding', 'patials/search-...')
Hors ligne
ça y est, j'ai résolu le problème, merci tout de même pour votre aide, je n'avais en fait pas suffisemment différencié mon code de vue, et je cherchais à utiliser le paginator sur une action pour laquelle elle n'était pas activée.
maintenant cela fonctionne prèsque, j'ai encore un bug dans mon partiel d'affichage du contrôle de pagination, mais je pense que je vais trouver...
Merci encore à vous pour votre aide...
@++ bidule ;-)
Hors ligne
Comment as tu fais "bidule" ?
Hors ligne