Php Yii CActiveDataProvider与类参数?
我在网站上找到了这个代码。要在CGridView中调用类TotalColumn,$dp dataprovider中必须包含什么?我是否必须让类TotalColumn位于$dp中的某个位置?你知道我该如何声明CActiveDataProvider吗Php Yii CActiveDataProvider与类参数?,php,yii,Php,Yii,我在网站上找到了这个代码。要在CGridView中调用类TotalColumn,$dp dataprovider中必须包含什么?我是否必须让类TotalColumn位于$dp中的某个位置?你知道我该如何声明CActiveDataProvider吗 <?php // protected/views/inventory/index.php Yii::import('zii.widgets.grid.CGridColumn'); class TotalColumn extends CGrid
<?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'
)
)));
您应该在protected/components目录中创建TotalColumn类作为TotalColumn.php文件。这样,您可以在许多不同的视图文件中使用它,而不是仅定义的视图文件。我会自动加载 $dp应该是一个典型的DataProvider类,更可能是在控制器中定义并传递给视图的类。数据提供者可以像文档描述的那样简单 公共函数renderDataCellContent$row$data 是在gridview中定义的方法 但是没有像这样的方法 公共函数renderSkills$row$data
在gridview中,我的问题是我几乎是一字不差地复制了这段代码,我的类中的render函数也正好在CGridView的正上方,使用Yii::import调用时,什么都不回显。我的表有一个我创建的列,其中任何一行都没有输出。我将添加我在原始帖子中使用的代码。正如我前面所说,在protected/components目录中定义您的TotalSkills。这就是我定义所有自定义类的方式,我知道它是有效的。如果在视图中定义类,我不知道它将如何运行。为什么不以一种干净且有文档记录的方式来做呢?再次查看您的类,我发现您没有重写所需的renderDataCellContent方法,但是您已经定义了自己的renderSkills。这是行不通的。尝试重命名为renderDataCellContent…谢谢。我终于明白了。感谢您提供将我的类放在protected/components目录中的提示。我必须有很多这样的课程,所以这肯定会让它更干净。再次感谢!
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'
)
)
));