cuwangpu 2012-09-17 18:41:04 4126次浏览 3条回复 0 0 0

在自定义一些属性的时候,可以修改默认的css属性,比如,在数组中加入 'pagerCssClass'=>'page',

就可以自定义对应的css值,比如对应的是 <div class="page"></div> ,改成 'pagerCssClass'=>'1234' ,就变成了<div class="1234"></div>.

现在有个问题,如何生成诸如这样的,<div id="page"></div>。有些是数组(array),可以这样,

'pagerCssClass'=>array(
    'id'=>'page',
),

但有些是string,不能用数组的方式自定义,怎么实现?

  • 回复于 2012-09-18 06:46 举报

    是用了CListPager挂件或着CLinkPager挂件了吗?可以在htmlOptions这个属性里面自定义的。

    //display pagination
    <?php $this->widget('CLinkPager', array(
        'pages' => $pages,
        ‘htmlOptions’=>array('id'=>'page_id','class'=>'page_class'),
     )) ?>
    </pre>
    
  • 回复于 2012-09-18 12:27 举报

    我用的是这个代码

    <?php
    $this->Widget('zii.widgets.CListView',array(
        'dataProvider'=>$dataProvider,
        'itemView'=>'_view',
        'pager'=>array(
                'cssFile'=>false,
                'firstPageCssClass'=>'pbutton',
                'firstPageLabel'=>'首页',
                'header'=>false,
                'htmlOptions'=>array(
                        'class'=>'null',
                    ),
                'internalPageCssClass'=>'pbutton',
                'lastPageCssClass'=>'pbutton',
                'lastPageLabel'=>'尾页',
                'nextPageCssClass'=>'pbutton',
                'nextPageLabel'=>'下一页',
                'prevPageLabel'=>'上一页',
    
            ),
        'summaryText'=>'总共{count}条,当前第{start}-{end}条.',
        'summaryCssClass'=>'null',
        'template'=>'{items} <div id="showpages">
        <div id="pagesinfo">{summary}</div><div id="pages">{pager}</div></div>',
        'pagerCssClass'=>'null',
        ));
    ?>
    

    生成的html代码是:

    <div id="showpages">
        <div id="pagesinfo"><div class="null">总共18条,当前第1-2条.</div></div>
        <div id="pages"><div class="null">
            <ul class="null" id="yw1">
                <li class="pbutton hidden"><a href="/index.php/news/index">首页</a></li>
                <li class="previous hidden"><a href="/index.php/news/index">上一页</a></li>
                <li class="pbutton selected"><a href="/index.php/news/index">1</a></li>
                <li class="pbutton"><a href="/index.php/news/index?News_page=2">2</a></li>
                <li class="pbutton"><a href="/index.php/news/index?News_page=3">3</a></li>
                <li class="pbutton"><a href="/index.php/news/index?News_page=4">4</a></li>
                <li class="pbutton"><a href="/index.php/news/index?News_page=5">5</a></li>
                <li class="pbutton"><a href="/index.php/news/index?News_page=6">6</a></li>
                <li class="pbutton"><a href="/index.php/news/index?News_page=7">7</a></li>
                <li class="pbutton"><a href="/index.php/news/index?News_page=8">8</a></li>
                <li class="pbutton"><a href="/index.php/news/index?News_page=9">9</a></li>
                <li class="pbutton"><a href="/index.php/news/index?News_page=2">下一页</a></li>
                <li class="pbutton"><a href="/index.php/news/index?News_page=9">尾页</a></li>
            </ul>
        </div></div>
        <div class="keys" style="display:none" title="/index.php/news"><span>1</span><span>2</span></div>
    </div>
    

    只贴出了pager和summary的部分。我拿 'summaryCssClass'=>'null', 这句举例说明。

    在template模板中{summary}会默认解释成(以本例子中)<div class="summary">总共18条,当前第1-2条.</div>,但是我想要的是:<div id="pagesinfo">总共18条,当前第1-2条.</div>,如果给'summaryCssClass'=>'pagesinfo',会解释成<div class="pagesinfo">总共18条,当前第1-2条.</div>,而不是<div id="pagesinfo">总共18条,当前第1-2条.</div>

    我现在的解决方法是:令'summaryCssClass'=>'null',然后模板写成“<div id="pagesinfo">{summary}</div>”,就解释成了<div id="pagesinfo"><div class="null">总共18条,当前第1-2条.</div></div>,null是空css。也就间接达到了我的目的。但这样相当于绕了一个圈子,怎样写'summaryCssClass',才能是id的形式,而不是class的形式?

    还有像pagerCssClass,htmlOptions也是都是修改css的class,而不是修改css的id。

    比如说这两处:

    <div id="pagesinfo"><div class="null"></div></div>
    <div id="pages"><div class="null"></div></div>
    
  • 回复于 2012-09-18 15:42 举报

    你这个方法已经很好了。另外就是利用summary的class了,JQuery都支持class来进行DOM搜索了;还有一种办法就是重写CListView了~

您需要登录后才可以回复。登录 | 立即注册