2 пагинатора на одной странице не работает!

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
espltdmh50
Сообщения: 569
Зарегистрирован: 2014.04.29, 19:14

2 пагинатора на одной странице не работает!

Сообщение espltdmh50 »

Доброго дня! Есть необходимость в реализации 2-ух пагинаторов на одной странице.

Таблица одна - posts.

на сайте отображается в виде 2ух колонок (слева, справа).

Слева достаются все посты, а справа есть некоторое условие, под которое выбираются лишь определенные посты.

в контроллере пишу

Код: Выделить всё

		$tree = new Posts(); 
		
		/** посты по дефолту */		
		$allPostsDefault = $tree->find()->where('visible = 1');   
		$countPostsDefault = $allPostsDefault->count();
		
		$paginationPostsDefault = new Pagination(['totalCount' => $countPostsDefault, 'pageSize'=>6]);
		
		$allPostsDefault = $allPostsDefault->offset($paginationPostsDefault->offset)
        	->limit($paginationPostsDefault->limit)
		->orderBy('post_id DESC')
       		->all();     		 
       		 /** посты по дефолту */
       		 
       		 
       		 /** посты по условию */     		 
       		 $allPostsSpecial = $tree->find()->where('special = 1 AND visible = 1');   
		 $countPostsSpecial = $allPostsSpecial->count();
		
		 $paginationPostsSpecial = new Pagination(['totalCount' => $countPostSpecial, 'pageSize'=>6]);
		
		 $allPostsSpecial = $allPostsSpecial->offset($paginationPostsSpecial->offset)
        	->limit($paginationPostsSpecial->limit)
		->orderBy('post_id DESC')
       		->all();     		 
       		/** посты по условию */
       		
       		// передача во вьюху
       		return $this->render('index', [
            		'allPostsDefault'=>$allPostsDefault, //все посты по дефолту
			'paginationPostsDefault'=>$paginationPostsDefault, //пагинация постов по дефолту
           		'allPostsSpecial'=>$allPostsSpecial, //специальные посты
            		'paginationPostsSpecial'=>$paginationPostsSpecial //пагинация спец. постов
       		 ]); 
       		
       		
       		во вьюхе (вот этот момент не понимаю), как реализовать 2 пагинатора, если у них классе есть публичное поле - pagination. Я пробовал делать так:
       		
       		<?php     
       			//первый пагинатор
                	echo LinkPager::widget([
                    		'pagination' => $paginationPostsDefault,
                	]);                
            	?>
            	
            	<?php     
       			//второй пагинатор
                	echo LinkPager::widget([
                    		'pagination2' => $paginationPostsSpecial,
                	]);                
            	?>
            	
            	//естественно я получаю ошибку, т.к. в классе LinkPager такого свойства нет, а если и добавить, то дальше полезут последующие ошибки. Как выйти из ситуации? Заранее, спасибо)) :?: 


zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: 2 пагинатора на одной странице не работает!

Сообщение zelenin »

если есть pagination, зачем писать pagination2?
espltdmh50
Сообщения: 569
Зарегистрирован: 2014.04.29, 19:14

Re: 2 пагинатора на одной странице не работает!

Сообщение espltdmh50 »

так иначе они работают одновременно. имеется ввиду переключил первый пагинатор, а переключился еще и второй... мне то ведь надо, чтобы они по отдельности работали. Я думаю, что этот механизм ведь где-то предусмотрен. Неужели нет?
espltdmh50
Сообщения: 569
Зарегистрирован: 2014.04.29, 19:14

Re: 2 пагинатора на одной странице не работает!

Сообщение espltdmh50 »

Код: Выделить всё


<?php     
       			//первый пагинатор
                	echo LinkPager::widget([
                    		'pagination' => $paginationPostsDefault,
                	]);                
            	?>
            	
            	<?php     
       			//второй пагинатор
                	echo LinkPager::widget([
                    		'pagination' => $paginationPostsSpecial,
                	]);                
            	?>

если я делаю вот так, то при переключении первого пагинатора, переключается еще и второй, что мне не нужно.

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: 2 пагинатора на одной странице не работает!

Сообщение zelenin »

у виджетов должны быть разные id
espltdmh50
Сообщения: 569
Зарегистрирован: 2014.04.29, 19:14

Re: 2 пагинатора на одной странице не работает!

Сообщение espltdmh50 »

вы имеете ввиду так?

Код: Выделить всё

echo LinkPager::widget([
'id' => 'test1',
'pagination' => $paginationPostsSpecial,
]); 
если так, то не работает.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: 2 пагинатора на одной странице не работает!

Сообщение ElisDN »

Код: Выделить всё

new Pagination(['totalCount' => $countPostSpecial, 'pageSize'=>6, 'pageParam' => 'page-special']);
espltdmh50
Сообщения: 569
Зарегистрирован: 2014.04.29, 19:14

Re: 2 пагинатора на одной странице не работает!

Сообщение espltdmh50 »

ааа, вон где его прописать надо, а я во вьюхе тоже пытался pageParam сделать, но не получалось. Понял. Спасибо большое
Ответить