如何才能延长CListView中删除多余的警予添加标记?(How to extend CListVi

2019-06-27 22:10发布

问题的关键是从CListView中删除渲染,那两个div:

<div id="yw0" class="list-view">
<div class="items">

我一直在寻找在这里:

https://github.com/yiisoft/yii/blob/master/framework/zii/widgets/CBaseListView.php#L123

但我什么也没有发现与这两个div的存在有关。

任何人都可以请分享,我们应该为了延长使之成为现实?

下面是所需的输出的更新:

<div>
  <article class="itemthing">
    list data
  </article>
  <article class="itemthing">
    list data
  </article>
  <article class="itemthing">
    list data
  </article>
</div>

Answer 1:

你会开来CListView中本身扩展更好,但写新实现run() 在CBaseListView方法 ,为一个新的实现renderItems() 在CListView中的方法 ,例如:

Yii::import('zii.widgets.CListView');
class MListView extends CListView{
    public function run(){
            $this->registerClientScript();
            // this line renders the first div
            //echo CHtml::openTag($this->tagName,$this->htmlOptions)."\n"; 

            $this->renderContent();
            $this->renderKeys();

            //echo CHtml::closeTag($this->tagName);
    }

    public function renderItems(){
            //this line renders the second div
            //echo CHtml::openTag($this->itemsTagName,array('class'=>$this->itemsCssClass))."\n"; 
            // copy original code from the function
            //echo CHtml::closeTag($this->itemsTagName);
    }
}

编辑:

要知道,有些默认CListView中的功能不会只是这么多的工作,因为jquery.yiilistview.js不会没有ID的工作,标识此列表视图。

编辑:

从更新后的问题,你能做到这一点,那么:

<div id="some-id">
<?php
    $this->widget('ext.extendedwidgets.MListView',array(
        'id'=>'some-id', // same id you specified in the div
        //... rest of it
        'template' => '{items}', // as seen in the chat below
    ));
</div>


文章来源: How to extend CListView in order to remove extra yii added markup?
标签: yii