Yii CActiveDataProvider с аргументом класса? - PullRequest
1 голос
/ 22 декабря 2011

Я нашел этот код на этом веб-сайте. Что должно быть в поставщике данных $ dp для того, чтобы класс TotalColumn вызывался в CGridView? Должен ли я иметь класс 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'
                    ) 
                )
));

Ответы [ 2 ]

0 голосов
/ 17 февраля 2012

открытая функция renderDataCellContent ($ row, $ data)

определяется методом в gridview но нет такого метода, как

открытая функция renderSkills ($ row, $ data)

в виде сетки

0 голосов
/ 22 декабря 2011

Вы должны создать класс TotalColumn в вашем защищенном каталоге / components в виде файла TotalColumn.php.Таким образом, вы можете использовать его во многих различных файлах представления вместо файла представления, который определен только.Yii загрузит его автоматически.

$dp должен быть типичным классом DataProvider (более вероятно, CActiveDataProvider ), который определен в вашем контроллере и передан вашему представлению.DataProvider может быть таким же простым, как описано в документации CGridView .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...