[英]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.