Yii-修改CListView生成的html

Yii-修改CListView生成的html,yii,Yii,我正在使用ClistView显示数据提供者的内容 ClistView应该调用一个局部视图,它将为每个模型循环 我想在分页的第一个模型之前显示一些内容(例如标签),在最后一个模型之后显示一些内容(例如a) 假设我有一个视图(index.php): 在_view.php中,我只有一个表的单元格 如果我把html放在小部件之前以呈现表头,而在html之后以呈现表尾,我会得到div中有寻呼机的html 如何在_view.php中直接移动页眉和页脚 谢谢因为您正在尝试生成一个表,所以应该尝试使用CGrid

我正在使用ClistView显示数据提供者的内容

ClistView应该调用一个局部视图,它将为每个模型循环

我想在分页的第一个模型之前显示一些内容(例如标签),在最后一个模型之后显示一些内容(例如a)

假设我有一个视图(index.php):

在_view.php中,我只有一个表的单元格

如果我把html放在小部件之前以呈现表头,而在html之后以呈现表尾,我会得到div中有寻呼机的html

如何在_view.php中直接移动页眉和页脚


谢谢

因为您正在尝试生成一个表,所以应该尝试使用CGridView而不是CListView来生成它。

尝试将CClistView的模板设置为

'template'   => "<your header tag>{items}<your footer tag>{pager}",
'template'=>“{items}{pager}”,

您可以根据需要安排模板内容。

使用此类扩展:

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

class PlainCListView extends CListView

{

public $preItemsTag = '';
public $postItemsTag = '';

public function renderItems()
{
    echo $this->preItemsTag."\n";
    $data=$this->dataProvider->getData();
    if(($n=count($data))>0)
    {
        $owner=$this->getOwner();
        $render=$owner instanceof CController ? 'renderPartial' : 'render';
        $j=0;
        foreach($data as $i=>$item)
        {
            $data=$this->viewData;
            $data['index']=$i;
            $data['data']=$item;
            $data['widget']=$this;
            $owner->$render($this->itemView,$data);
            if($j++ < $n-1)
                echo $this->separator;
        }
    }
    else
        $this->renderEmptyText();
    echo $this->postItemsTag."\n";

}


 }
此解决方案包含以下代码:

$pre_html = '<table><thead><th>Codice Account</th><th>Nome</th></thead><tbody>';
$post_html = '</tbody></table>';

$this->widget('zii.widgets.PlainCListView', array(
                    'dataProvider'=>$dataProvider,
                    'itemView'=>'_view', 
                    'preItemsTag'=>$pre_html,
                    'postItemsTag'=>$post_html,
                    'summaryText'=>'Sono visualizzati i record da {start} a {end} su un totale di {count} libri',
                    'pager' => Array(
                    'header' => 'Vai alla pagina',
                    'prevPageLabel' => 'Indietro',
                    'nextPageLabel' => 'Avanti',
                        ),
                    'sortableAttributes'=>array('titolo'),
                    'enableSorting'=>0,



));
$pre_html='Codice AccountNome';
$post_html='';
$this->widget('zii.widgets.PlainCListView',数组(
“dataProvider”=>$dataProvider,
“项目视图”=>“项目视图”,
'preItemsTag'=>$pre_html,
'positemstag'=>$post\u html,
“summaryText”=>“Sono Visualizati i记录数据{start}a{end}su un total di{count}libri”,
“寻呼机”=>数组(
'header'=>'Vai alla pagina',
“prevPageLabel”=>“Indietro”,
“nextPageLabel”=>“Avanti”,
),
'sortableAttributes'=>数组('titolo'),
“enableSorting”=>0,
));

有可能得到我需要的输出。

Nahian,谢谢你的回答。当然,如果我使用CGridView,我没有任何问题,但我想使用ClistView来获得我想要的。再次感谢,但这没有帮助,因为有太多的html未被请求。我修改了CListView类。我不确定“我修改了CListView类”是什么意思,但我推荐我认为更准确的方法-扩展CListView,在扩展类中进行修改,然后使用该类。不要更改框架的类。那是个坏习惯。在其他情况中,在更类似的情况下这样做会阻止您升级框架文件夹,例如,更新新的安全补丁。Boaz,谢谢您的建议。很明显,我修改的意思是我扩展了。修改框架是一种不好的做法。@maxdnangelo:您将“PlainCListView”类文件放在哪里了?
echo CHtml::openTag($this->itemsTagName,array('class'=>$this->itemsCssClass))."\n";

echo CHtml::closeTag($this->itemsTagName);
$pre_html = '<table><thead><th>Codice Account</th><th>Nome</th></thead><tbody>';
$post_html = '</tbody></table>';

$this->widget('zii.widgets.PlainCListView', array(
                    'dataProvider'=>$dataProvider,
                    'itemView'=>'_view', 
                    'preItemsTag'=>$pre_html,
                    'postItemsTag'=>$post_html,
                    'summaryText'=>'Sono visualizzati i record da {start} a {end} su un totale di {count} libri',
                    'pager' => Array(
                    'header' => 'Vai alla pagina',
                    'prevPageLabel' => 'Indietro',
                    'nextPageLabel' => 'Avanti',
                        ),
                    'sortableAttributes'=>array('titolo'),
                    'enableSorting'=>0,



));