$current_page = intval($args[2]);
$results_per_page = 5;
$pager_layout = new PagerLayoutWithArrows (
new Doctrine_Pager (
Doctrine_Query :: create ()
->from ( "Message m" )
->orderBy ( "id DESC" ),
$current_page ,
$results_per_page
),
new Doctrine_Pager_Range_Sliding (
array ( "chunk" => 5 )),
"тут ваш адрес/{%page_number}"
);
$pager_layout ->setTemplate ('<a href="{%url}" class="pager">{%page}</a>');
$pager_layout ->setSelectedTemplate ('<b class="pager">{%page}</b>');
$pager = $pager_layout ->getPager ();
$messages = $pager->execute()->getData();
$this->registry->template->messages = $messages;
$this->registry->template->pager = $pager_layout ->display('',true);
$this->registry->template->show('тут название шаблона');
Ну а вот наш класс-наследник PagerLayoutWithArrows, для удобства мы переопределим класс Doctrine_Pager_Layout, чтобы у нас выводилась более продвинутая навигация:
class PagerLayoutWithArrows extends Doctrine_Pager_Layout {
public function display($options = array(), $return = false) {
$pager = $this->getPager();
$str = '';
// First page
$this->addMaskReplacement('page', '«', true);
$options['page_number'] = $pager->getFirstPage();
$str .= $this->processPage($options);
// Previous page
$this->addMaskReplacement('page', '‹', true);
$options['page_number'] = $pager->getPreviousPage();
$str .= $this->processPage($options);
// Pages listing
$this->removeMaskReplacement('page');
$str .= parent::display($options, true);
// Next page
$this->addMaskReplacement('page', '›', true);
$options['page_number'] = $pager->getNextPage();
$str .= $this->processPage($options);
// Last page
$this->addMaskReplacement('page', '»', true);
$options['page_number'] = $pager->getLastPage();
$str .= $this->processPage($options);
// Possible wish to return value instead of print it on screen
if ($return) {
return $str;
}
echo $str;
}
}
Комментариев нет:
Отправить комментарий