【问题标题】:Some questions about the pagination in PHP using Yii关于 PHP 使用 Yii 进行分页的一些问题
【发布时间】:2013-09-23 16:51:34
【问题描述】:

我正在我的网页中创建一个画廊。在我的网络中,我也有一些视图,其中我使用了一些小部件,如 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”,当我单击一个按钮时,它不会改变他的颜色背景,最重要的是,当我单击一个按钮时,页面被刷新,你会显示这个的开头,我的意思是,标题,而不是分页栏。

我知道要更改背景颜色,我必须编辑 css,就我而言,在 navi.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 分页栏。

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

编辑:

我使用gallery.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>

【问题讨论】:

    标签: php css yii pagination


    【解决方案1】:

    我认为最好让 yii 为你做分页,只需使用一个标准来获取你的模型并给它一个 CPagination 的实例。

    您还可以定义一个 css 类并将其分配给您的 gridview 或使用“htmlOptions”.like 的任何东西:

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

    这是good example.

    希望这会有所帮助。

    更新:或者你可以:

    首先在您的控制器中,

    $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,
    

    )) ?>

    【讨论】:

    • 谢谢tinyByte,我也觉得最好的办法是让yii做分页但是我不知道怎么做。我的问题是在这种情况下我没有模型!我只手动创建画廊视图....我把 gallery.php 放在 protected/views/site/gallery.php 我应该创建一个模型吗?你能帮帮我吗?
    • 是的,我认为您应该使用数据提供者,或者至少使用模型来更好地管理和填充您的数据。然后您可以使用您的画廊渲染该模型。这样更容易。
    • 谢谢 tinyByte,但你能告诉我怎么做吗?你能告诉我我必须在模型中写什么吗?
    • 感谢 tinyByte。老实说,我不知道在寻找什么,呵呵。我只想创建一个带分页的图片库。我试过你的例子,但正如我告诉你的那样,我没有任何模型,代码会产生警告“include(Books.php): failed to open stream: No such file or directory”。此外,我必须在$criteria = new CDbCriteria; 之后添加这行$count=Books::model()-&gt;count($criteria); 你能帮我吗?
    • 我假设您已将图像存储在某处,并且您有一个模型,用于访问您的信息。我回答中的书籍只是一个示例。您应该使用自己的模型名称而不是那个!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    相关资源
    最近更新 更多