@reaget

Как устроена пагинация в YII?

Здравствуйте!
Есть старенький сайт ВОТ

Во время поиска у нас на странице выводится 10 записей и внизу есть пагинация. Количество страниц она отображает, но не позволяет переходить на эти страницы. При нажатии на любую из кнопок URL меняется, но содержимое страницы остается неизменным.

Пагинация построена при помощи CLinkPager, код:
class KLinkPager extends CLinkPager {

		protected function createPageButtons() {
			if(($pageCount=$this->getPageCount())<=1)
				return array();

			list($beginPage,$endPage)=$this->getPageRange();

			$currentPage=$this->getCurrentPage(false);
			$buttons=array();

			if(($page=$currentPage-1)<0)
				$page=0;
			$buttons[]=$this->createPageButton($this->prevPageLabel, $page, self::CSS_PREVIOUS_PAGE, $currentPage<=0, false);

			if(($page=$currentPage+1)>=$pageCount-1)
				$page=$pageCount-1;
			$buttons[]=$this->createPageButton($this->nextPageLabel,$page,self::CSS_NEXT_PAGE,$currentPage>=$pageCount-1,false);

			if($beginPage>0) {
				$buttons[]=$this->createPageButton((string)1,0,self::CSS_FIRST_PAGE,$beginPage<=0,false);
			}

			for($i=$beginPage;$i<=$endPage;++$i)
				$buttons[]=$this->createPageButton($i+1,$i,self::CSS_INTERNAL_PAGE,false,$i==$currentPage);

			if($endPage<$pageCount-1) {
				$buttons[]=$this->createPageButton((string)$pageCount,$pageCount-1,self::CSS_LAST_PAGE,$endPage>=$pageCount-1,false);
			}

			return $buttons;
		}
}


Ссылки в пагинации формируются странным образом.
Если ссылка была такой:
http://krepplast.ru/search/тарелка/?item_page=1 и мы нажимаем на "страницы 2", то ссылка становится такой:
http://krepplast.ru/search/тарелка/?item_page=2&item_page=2

Я думал в каком-то из контроллеров ошибка, URL обрабатывает неверно, но ничего не нашел.
Есть ли у вас какие-либо мысли?
  • Вопрос задан
  • 54 просмотра
Решения вопроса 1
@reaget Автор вопроса
Ответ был прост, мы самой модели не указали наличие пагинации и параметр, который указывает на страницу. Между точками недостающий кусок кода:
return new CActiveDataProvider('Item', array(
			'criteria' => $criteria,
....................................................................
			'pagination' => array(
				'pageSize' => 10,
				'pageVar' => 'item_page',
			),
.....................................................................
			'sort' => array(
				'defaultOrder' => 't.sortorder DESC, t.title ASC',
				'attributes' => array(
					'title' => array(
						'asc' => 't.title',
						'desc' => 't.title DESC',
					),
					'price' => array(
						'asc' => 't.price',
						'desc' => 't.price DESC',
					),
				),
			),
		));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы