簡體   English   中英

Yii CActiveDataProvider與類參數?

[英]Yii CActiveDataProvider with class argument?

我在網站上找到了此代碼。 要在CGridView中調用類TotalColumn,必須在$ dp數據提供程序中包含什么? 我是否必須將類TotalColumn放在$ dp中? 我知道如何聲明該CActiveDataProvider嗎?

<?php
// protected/views/inventory/index.php

Yii::import('zii.widgets.grid.CGridColumn');

class TotalColumn extends CGridColumn {

private $_total = 0;

public function renderDataCellContent($row, $data) { // $row number is ignored

    $this->_total += $data->quantity;

    echo $this->_total;
}
}

$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider' => $dp,   // provided by the controller
'columns' => array(
    'id',
    'name',
    'quantity',
    array(
        'header' => 'Total',
        'class'  => 'TotalColumn'
    )
)));

這是我的代碼,但自定義列中未顯示任何內容:

Yii::import('zii.widgets.grid.CGridColumn');
    class TotalSkills extends CGridColumn
    {
        private $test = "blah";

        public function renderSkills($row, $data)
        {
            echo $this->test;
        }

    }




// People
echo CHtml::label('People', 'yw0', $shared_html_options);
$dataProvider = new CActiveDataProvider('Person');
$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'columns'=>array(
                    'name',
                    'age',
                    array(
                    'header'=>'Total Skills',
                    'class'=>'TotalSkills'
                    ) 
                )
));

您應該在protected / components目錄中將TotalColumn類創建為TotalColumn.php文件。 這樣,您可以在許多不同的視圖文件中使用它,而不是僅使用定義的視圖文件。 Yii會自動加載它。

$dp應該是在控制器中定義並傳遞到視圖的典型DataProvider類(很有可能是CActiveDataProvider )。 DataProvider可以像CGridView文檔中描述的那樣簡單。

公共函數renderDataCellContent($ row,$ data)

是在gridview中定義的方法,但是沒有諸如

公共函數renderSkills($ row,$ data)

在GridView中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM