【问题标题】:YII CListView How to add id to itemwrapperYII CListView 如何将 id 添加到 itemwrapper
【发布时间】:2013-11-20 06:32:07
【问题描述】:

在 CListView 中有一个名为“itemsCssClass”的属性,它基本上将 HTML 类属性添加到 Itemwrapper。

如果我想添加一个 ID 或任何其他 htmlOptions 我将如何在该包装器上执行它..?

我的代码是:

    <?php $this->widget('zii.widgets.CListView', array(
    'dataProvider'=>$model->search(),
    'viewData'=>array('x'=>''),
    'itemView'=>'_classifieds',
    'id'=>'boa_ads',
    'itemsCssClass'=>'test'
));

此代码将生成此 HTML:

<div id="boa_ads" class="list-view">
 <div class="summary">Displaying 1-4 of 4 results.</div>

   <div class="items"><!-- HERE ID LIKE TO ADD AN ID-->
     ----ITEMS GOES HERE ----
   </div>

 </div>
</div>

提前感谢您的帮助

【问题讨论】:

  • 我更新了我的答案。请看一下!

标签: php html css yii


【解决方案1】:

来自 Yii 的来源:

public function renderItems()
    {
            echo CHtml::openTag($this->itemsTagName,array('class'=>$this->itemsCssClass))."\n";
             .....
            echo CHtml::closeTag($this->itemsTagName);
    }

我刚刚看到class 属性被传递给itemsTagName,所以你可能必须扩展CListView 才能做到这一点。

您可以创建一个从 CListView 扩展的 CCustomListView 类(在 application/widgets 文件夹内)并覆盖 renderItems() 函数。 例如:

<?php

Yii::import("zii.widgets.CListView");

class CCustomListView extends CListView
{

    public $itemsHtmlOptions;
    /**
     * Renders the data item list.
     */
    public function renderItems()
    {
        echo CHtml::openTag($this->itemsTagName, array_merge(array('class'=>$this->itemsCssClass), $this->itemsHtmlOptions))."\n";
        $data=$this->dataProvider->getData();
        if(($n=count($data))>0)
        {
            $owner=$this->getOwner();
            $viewFile=$owner->getViewFile($this->itemView);
            $j=0;
            foreach($data as $i=>$item)
            {
                $data=$this->viewData;
                $data['index']=$i;
                $data['data']=$item;
                $data['widget']=$this;
                $owner->renderFile($viewFile,$data);
                if($j++ < $n-1)
                    echo $this->separator;
            }
        }
        else
            $this->renderEmptyText();
        echo CHtml::closeTag($this->itemsTagName);
    }
}

在您看来,您可以像这样使用它:

<?php $this->widget('application.widgets.CCustomListView', array(
    'dataProvider'=> 'your_data_provider',
    'itemsHtmlOptions' => array('style' => 'color:blue', 'id' => 'your_id'),
    'itemView'=>'your_item_view',
    'template'=>'your_template',
)); ?>

所以itemsHtmlOptions 中的样式将应用于listview

这个链接也对你有用:How to extend CListView in order to remove extra yii added markup?

【讨论】:

  • NO 不是小部件。我在我的问题中的意思是项目包装器。特别是 DIV 包装了所有显示的项目。结果与 itemsCssClass 属性相同,但这次是“id 属性”不是“类属性”。我知道我可以使用 ID 属性向“小部件”添加一个 ID。但我正在尝试向项目包装器添加一个 id 。默认情况下,它的类属性为“项目”..
  • 我已经更新了代码以显示 HTML 和更清晰的想法
  • 谢谢真的帮了很多忙.. :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多