关于使用 Yii 在 PHP 中进行分页的一些问题


Some questions about the pagination in PHP using Yii

我正在我的网页上创建一个画廊。在我的网络中,我也有一些视图,我使用一些小部件,如CGridView或CListView。 在这些视图中,当页面中有许多元素时,会自动显示一个分页栏。当然,我使用 Yii 创建了这些视图,问题是我不知道如何在我的画廊视图中创建这种分页。出于这个原因,我在互联网上搜索了分页代码,我发现了一些东西。现在我正在使用这段代码

<div class="pagination">
<ul>
<?php
echo "<a href='"?pag=".'1'."'" onclick='"Pagina('1')'">&lt;&lt; Primero </a> ";
if($pag_act>1) echo "<a href='"?pag=".$pag_ant."'" onclick='"Página('$pag_ant')'"> &lt; Anterior</a> ";
for ($l=$pag_act;$l<=$pag_ult;$l++){
echo "<a href='"?pag=".$l."'" onclick='"Página('$l')'"> $l</a> ";
}
  if($pag_act<$pag_ult) echo " <a href='"?pag=".$pag_sig."'"    onclick='"Pagina('$pag_sig')'">Siguiente &gt; </a> ";
echo "<a href='"?pag=". $pag_ult."'" onclick='"Pagina('$pag_ult')'">Último &gt;&gt;   </a>";
?>
 </ul>
 </div>
当然,我

编辑了代码,因为我希望它显示一个类似于我告诉你的另一个视图中由 Yii 创建的分页栏。

最后,我的分页栏与Yii创建的分页栏相似,但它们的工作方式不同。例如,我的分页栏在URL中显示"myApp/site/gallery.html?pag=1",当我单击一个按钮时,它不会改变他的颜色背景,最重要的是,当我单击一个按钮时,页面会刷新,你显示这个的开头,我的意思是,标题,而不是分页栏。

我知道要更改背景颜色,我必须在 navi 中编辑 css.css我有:

/*----------------------------------------------分页-------------------------------------*/

.pagination{display:block; width:100%; text-align:center; clear:both;}
.pagination ul{margin:0; padding:0; list-style:none;}
.pagination li{display:inline;}
.pagination .next{margin:0;}
.pagination a{display:inline-block; padding:2px 5px 3px 5px; margin:0 2px 0 0; border:1px solid #DFDFDF;}
.pagination .current, .pagination .splitter{padding:6px; margin:0 2px 0 0;}
.wrapper .pagination a:hover, .pagination .current, .pagination       .splitter{color:#9B9B9B!important; background-color:#F9F9F9;}
.pagination ul li.selected a{color:#666666!important; background-color: #F9F9F9;border:0;}

但我不知道该怎么做才能更改分页栏的背景颜色。

我希望我的分页栏像 Yii 创建的一样工作,或者知道如何创建另一个像 Yii 分页栏一样的分页栏。

拜托,有人可以帮我吗?谢谢!

编辑:

我使用图库的这段代码.php来显示图像:

<div class="wrapper col2">
  <div id="container" class="clear">
    <!--     ####################################################################################################### -->
    <div id="tabcontainer">
      <ul id="tabnav">
        <li><a href="#tabs-1">Wedding Photos</a></li>
        <li><a href="#tabs-2">Artistic Photos</a></li>
        <li><a href="#tabs-3">Children's Photos</a></li>
        <li><a href="#tabs-4">Fashion Photos</a></li>
        <li><a href="#tabs-5">Action Photos</a></li>
      </ul>
      <!-- ########### -->
      <div id="tabs-1" class="gallery clear">
        <ul>
    
        <?php 
        while($imagen_a_empezar<$imagen_a_terminar){
                if($imagen_a_empezar>=$total_imagenes) break;
        
            if (in_array($imagen_a_empezar,$ultimos)){ 
            ?>
        
                <li class="last"><a href="<?php echo Yii::app()->theme->baseUrl;?>/images/portfolioslider/<?php echo     $archivos[$imagen_a_empezar]?>.jpg" rel="prettyPhoto[gallery1]" title=""><img src="<?php echo Yii::app()->theme->baseUrl; ?>/images/gallery/<?php echo $archivos[$imagen_a_empezar]?>.jpg" alt="" /></a></li>
                
        
            <?php }else{ ?> 
        
                <li><a href="<?php echo Yii::app()->theme->baseUrl;?>/images/portfolioslider/<?php echo archivos[$imagen_a_empezar]?>.jpg" rel="prettyPhoto[gallery1]" title=""><img src="<?php echo Yii::app()->theme->baseUrl; ?>/images/gallery/<?php echo $archivos[$imagen_a_empezar]?>.jpg" alt="" /></a></li>
        
            <?php };?>
          <?php  $imagen_a_empezar++;
        };?>
    
        </ul>
      </div>
    </div>
  </div>
</div>

我觉得还是让yii帮你做分页比较好,只要用一个标准来获取你的模型,给它一个CPagination的实例。

您还可以定义一个 CSS 类,并使用"htmlOptions"将其分配给 gridView 或任何内容。

$this->widget('bootstrap.widgets.TbGridView', array(
        'id' => 'my-grid',
        'dataProvider' => $model->search(),
        'summaryText'=>'', // hide summary
        'htmlOptions' => array(
          'class' => 'someClass',
          'style' => 'width: 600px;height: 300px;',
         ),
    ));

这是一个很好的例子。

希望这有帮助。

更新 :或者您可以:

首先在您的控制器中,

$criteria = new CDbCriteria;
...
$pages=new CPagination($count);
    // results per page
    $pages->pageSize=10;
    $pages->applyLimit($criteria);
    $models = Books::model()->findAll($criteria);
    $this->render('index', array(
       'models' => $models,
       'pages' => $pages
    ));

然后在你看来,

<?php foreach($models as $model): ?>
    $this->renderPartial('_gallery' , array('model' => $model));
<?php endforeach; ?>
// display pagination
<?php $this->widget('CLinkPager', array(
    'pages' => $pages,

)) ?>