Bonsoir tous le monde voilla je debute sur Yii frameworke et je travaille sur un site ou je doit faire un boutton de page size il permettra d’afficher le nombre d’elements par page 8 16 24 … je ne sais pas comment le faire dans protected/components/clinkPageFrontend j’ai la fonction qui suit:
public function createPageSizeButtons()
{
// possible pageSize
$list=array(8,16,24,32);
$lines=array();
// generate pageSize link
foreach($list as $l)
{
if($this->pageSize==$l)
continue;
$lines[]='<li><a href="'.$this->getController()->createUrl(Yii::app()->controller->action->id,array('id'=>$this->id,'pageSize'=>$l)).'">'.$l.'</a></li>';
}
$pageSizeSelect='<div id="resutle">
<ul id="numbs" onclick="$(this).children(\'ul\').toggle()">
<li class="push"><span>'.$this->pageSize.'</span><span class="picto"></span></li>
<ul class="drop">
'.implode('',$lines).'
</ul>
</ul>
<span class="txt">Résultats par page</span>
</div>';
return $pageSizeSelect;
}
ici dans le controller de la page INDEX voila ske jai
public function actionIndex()
{
$pageSize=(!empty($_GET['pageSize']))?$_GET['pageSize']:7;
$marque=(!empty($_GET['m']))?$_GET['m']:null;
$categorie=(!empty($_GET['c']))?$_GET['c']:null;
$criteria = new CDbCriteria();
$criteria->compare('id_marque',$marque);
$criteria->compare('id_categorie',$categorie);
$count=Produit::model()->count($criteria);
$pages=new CPagination($count);
// results per page
$pages->pageSize=$pageSize;
$pages->applyLimit($criteria);
$criteria->limit=$pages->getLimit();
$criteria->offset=$pages->getOffset();
$dataProvider = Produit::model()->findAll($criteria);
// get categorie/marque id/titre for search purpose
$sql="select id,titre from categorie WHERE id=:id LIMIT 1";
$cmd=Yii::app()->db->createCommand($sql);
$cmd->bindParam(':id',$categorie,PDO::PARAM_INT);
$categorieData = $cmd->queryRow();
$sql="select id,titre from marque WHERE id=:id LIMIT 1";
$cmd=Yii::app()->db->createCommand($sql);
$cmd->bindParam(':id',$marque,PDO::PARAM_INT);
$marqueData = $cmd->queryRow();
$this->render('index',array(
'dataProvider'=>$dataProvider,
'pagination'=>$pages,
'pageSize'=>$pageSize,
'marque'=>$marqueData,
'categorie'=>$categorieData,
));
}
sachant que je n’ai rien ajouter pour crée le boutton de size j’ai juste fait la pagination (suivant precedent)
dans le view voila se que j’ai mis pour afficher les boutton suivant precedent
<div id="contenu" class="container">
<span id="arrow"></span>
<div id="top_access">
<div class="clear"></div>
<div id="bread">
<?php
$this->breadcrumbs=array(
'Liste produits'
); ?>
</div>
<div>
<?php
$begin=$pagination->getOffset()+1;
$end=($pagination->getLimit() * ($pagination->getCurrentPage()+1));
$end=($end -> $pagination->getItemCount())?$pagination->getItemCount():$end;
?>
<!--<h3>Affichage de <?php echo $begin; ?> à <?php echo $end; ?> résultats sur <?php echo $pagination->getItemCount(); ?> accessoires correspondants</h3>-->
<?php $this->widget('CLinkPagerFrontend', array(
'pages' => $pagination,
'firstPageLabel'=>false,
'lastPageLabel'=>false,
'cssFile'=>false,
'pageSize'=>$pageSize,
'header'=>false,
'htmlOptions'=>array('class'=>'pagin'),
)) ?>
</div>
</div>
<div class="clear"></div>
</div>
ma questions
comment je vais proceder pour integer le boutton pagesize ?
esque vous pouvais comment fonctionne pagination en detaile et comment faire appelle a elle quand j’en aurais besoin merci ?