2012-09-06 68 views
3

點是從CListView中刪除渲染,那兩個div:如何擴展CListView以刪除多餘的yii添加標記?

<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> 
+0

你爲什麼要刪除他們? –

+1

@mashingan:因爲當你仔細設計你的頁面樣式時,使用語義相關的容器,你不希望你的代碼受到像這些div div標記一樣的污染。除非他們以我現在看不到的方式有用......你能嗎? – MEM

回答

2

你會更好,從CListView中本身延伸,但run()method in CBaseListView併爲renderItems()method in 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> 
+0

確保任何地方,只要警予可以找到類,你可以創建它,但我已經在_protected /擴展/ extendedwidgets/MCListView.php_做到了。另外請注意,分頁不能在ajax模式下工作,開箱即用,你必須修改生成的jquery/javascript也是 –

+0

謝謝。我們在哪裏可以修改生成的jquery/javascript?小心分享?我真的很抱歉所有這些問題,但這是我希望這麼久的事情,以及那些總是在路上的divitis ...我還想知道爲什麼ajax不工作,如果我們刪除這些div (或者它不起作用,因爲我們正在擴展它?); – MEM

+0

'$ this->小部件('ext.extendedwidgets.MCListView',array(...))'。 jquery可以在_zii/widgets/assets/listview/jquery.yiilistview.js_中找到。 ajax不起作用,因爲ajax更新由yiilistview.js完成,它會查找帶有id的div並更新該div。所以它不起作用,因爲我們刪除了div。如果你有不同的容器div(包含這個列表),那麼你可以將該div的id傳遞給jquery。 –