我在mysql中有一个表,我希望用CGridView
小部件显示。这是我到目前为止的代码:
我的控制器文件(当然剪断):
public function actionIndex()
{
//call the AR table model
$model = new ViewResults();
//This generates a simple "SELECT * FROM table statment".
$list = $model->findAll();
$this->render('index', array('list'=>$list));
}
我的查看文件看起来像(剪掉):
<?php $this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$list,
)); ?>
我收到以下错误:
在第105行的C:\ xampp \ framework \ zii \ widgets \ CBaseListView.php中的非对象上调用成员函数getData()
以下是CBaseListView.php文件的源代码。
我很确定通过将列表对象放在窗口小部件中而搞砸了。在我将它传递给小部件之前,我是否需要对$list
做些什么?
答案 0 :(得分:3)
findAll()返回数组,而CActiveDataProvider返回dataProvider。
如果你想使用find all,你所要做的就是使用CArrayDataProvider转换数组
示例:
<?
php $this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>new CArrayDataProvider($list, array()),
));
?>
答案 1 :(得分:2)
您可以使用CActiveDataProvider Yii的类。 像这样:
$dataProvider = new CActiveDataProvider('model', array(
'criteria'=>array(
'order'=>'column1',
),
));
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'my-grid',
'dataProvider'=>$dataProvider,
'columns'=>array(
'column1',
'column2',
'column3',
array(
'class'=>'CButtonColumn',
),
),
));
模型是您的模型并列出您的列。
答案 2 :(得分:0)
使用CArrayDataProvider也是一种选择。但是当它来自CActiveDataProvider时,排序很容易。