Sistema di Paginazione

Salve a tutti avrei un piccolo problema con il widget CLinkPager

ho il seguente codice

Controller:




	public function actionSearch(){

		$termine=$_GET['termine'];

	 	

	//La query sotto funziona perfettamente, e fa anche le sotto query necessarie 

	//ricorda di usare la notazione ->

     

	 $dataProvider=new CActiveDataProvider('Dominio',array(

													'criteria'=>array(

															'with'=>'venditas',

															'with'=>'affittos',

															'with'=>'idsottocategoria0',

															'with'=>'utenteRichiedeServizios',

															'select'=>'*',

															'condition'=>'nome_dominio LIKE :nome',

															'params'=>array(':nome'=>'%'.$termine.'%'),

															),

														)

												);

	 

	 $item_count = $dataProvider->itemCount;

	 $page_size =1;

	 

	 $pages =new CPagination($item_count);

	 $pages->setPageSize($page_size);

	 

	 // simulate the effect of LIMIT in a sql query

	 $end =($pages->offset+$pages->limit <= $item_count ? $pages->offset+$pages->limit : $item_count);

	 

	 $sample =range($pages->offset+1, $end);

	

	 		

	

	$this->render('search',array(

	 		'dataProvider'=>$dataProvider,

			'item_count'=>$item_count,

			'page_size'=>$page_size,

			'items_count'=>$item_count,

			'pages'=>$pages,

			'sample'=>$sample,

	 		));

	 

	}



e la view search.php




<div style="height:50px;width:100%">Ricerca Avanzata</div>


<div style="width:90%;">

<?php 

	$domini=$dataProvider->getData();

	foreach($domini as $dominio)

	{

		

?>	

	

		<div class="view" id="view<?php echo $dominio->iddominio;?>" style="width:100%;height:80px;float:none">

			<div class="labelDiv">

					<b><?php echo CHtml::encode($dominio->getAttributeLabel('nome_dominio'));?></b>

					<b><?php echo CHtml::encode('Categoria')?></b>

					<b><?php echo CHtml::encode('Sottocategoria')?></b>

					<?php

			   			if(isset($dominio->affittos[0]))

			   			{

			   				echo "<b>".CHtml::encode('Prezzo Affitto')."</b>";

			   				echo "<b>". CHtml::encode('Periodo Affitto')."</b>";

			   			}

			   			else if(isset($dominio->venditas[0]))

			   			{

			   				echo "<b>".CHtml::encode('Offerta minima')."</b>";

			   				echo "<b>". CHtml::encode('Compra Subito')."</b>";

			   			}

					?>

					<b>Operazioni</b>

			</div>

		</div>

	








<?php }//chiude foreach

	

?>

<?php //pagination

$this->widget('CLinkPager', array(

	'currentPage'=>$pages->getCurrentPage(),

	'pages'=>$pages,

));

?>

</div>



Naturalmente è una ricerca personalizzata e mi serve "paginare" i risultati della query fatta con dataProvider

Il sistema di pagina viene visualizzato correttamente, ma vorrei che in ogni pagina venissero messi solo 5 elementi della query. Nel modo in cui ho fatto vengo visualizzati in ogni pagina tutti gli elementi della query.

Cosa sto sbagliando??

Grazie a tutti

forse qui :


	

.....				

	 $item_count = $dataProvider->itemCount;

	 $page_size =1;

	 

	 $pages =new CPagination($item_count); // istanza CPagination

	 $pages->setPageSize($page_size); //risultati per pagina -> hai settato 1!!!	

.....



No ho fatto la prova non è quello il problema!

Secondo me sta nel fatto ce sto usando un foreach personalizzato e non un widget.

Provo e vi faccio sapere

Credo di aver risolto.

Le proprietà di paginazione vanno direttamente nel $dataProvider.

Ok ho risolto in questo modo:

  1. Il controller



	 $dataProvider=new CActiveDataProvider('Dominio',array(

													'criteria'=>array(

															'with'=>'venditas',

															'with'=>'affittos',

															'with'=>'idsottocategoria0',

															'with'=>'utenteRichiedeServizios',

															'select'=>'*',

															'condition'=>'nome_dominio LIKE :nome',

															'params'=>array(':nome'=>'%'.$termine.'%'),

															),

	 												'pagination'=>array('pageSize'=>5),

														));


     $this->render('Psearch',array(

	 		'dataProvider'=>$dataProvider,


	 		));



  1. la view Psearch



<div style="height:50px;width:100%">Ricerca Avanzata</div>

<?php $this->widget('zii.widgets.CListView', array(

	'dataProvider'=>$dataProvider,

	'itemView'=>'search',

	

)); ?>



  1. la (partial) view search




<div style="width:90%;">


<?php $dominio=$data;?>	

	<div class="view" id="view<?php echo $dominio->iddominio;?>" style="width:100%;height:80px;float:none">

			<div class="labelDiv">

					<b><?php echo CHtml::encode($dominio->getAttributeLabel('nome_dominio'));?></b>

					<b><?php echo CHtml::encode('Categoria')?></b>

					<b><?php echo CHtml::encode('Sottocategoria')?></b>

					<?php

			   			if(isset($dominio->affittos[0]))

			   			{

			   				echo "<b>".CHtml::encode('Prezzo Affitto')."</b>";

			   				echo "<b>". CHtml::encode('Periodo Affitto')."</b>";

			   			}

			   			else if(isset($dominio->venditas[0]))

			   			{

			   				echo "<b>".CHtml::encode('Offerta minima')."</b>";

			   				echo "<b>". CHtml::encode('Compra Subito')."</b>";

			   			}

					?>

					<b>Operazioni</b>

			</div>

		</div>











</div>



Ovviamente sono tutte view personalizzate.