3

关键是从 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>
4

1 回答 1

2

您最好从 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>
于 2012-09-06T11:18:42.963 回答