Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将活动记录数据插入Yii';CGRidView小部件_Php_Mysql_Yii_Yii Components_Zii Widgets - Fatal编程技术网

Php 将活动记录数据插入Yii';CGRidView小部件

Php 将活动记录数据插入Yii';CGRidView小部件,php,mysql,yii,yii-components,zii-widgets,Php,Mysql,Yii,Yii Components,Zii Widgets,我在mysql中有一个表,我想用CGridView小部件显示它。以下是我迄今为止的代码: 我的控制器文件(当然被剪掉了): 我的视图文件看起来像(被剪断): 我得到以下错误: 在C:\xampp\framework\zii\widgets\CBaseListView.php的第105行对非对象调用成员函数getData() 这是该文件的源代码 我很确定我把列表对象放在小部件中是搞砸了。在我将$list传递给小部件之前,是否需要对其执行一些操作?您可以使用CActiveDataProvider

我在mysql中有一个表,我想用
CGridView
小部件显示它。以下是我迄今为止的代码:

我的控制器文件(当然被剪掉了):

我的视图文件看起来像(被剪断):


我得到以下错误:

在C:\xampp\framework\zii\widgets\CBaseListView.php的第105行对非对象调用成员函数getData()

这是该文件的源代码


我很确定我把列表对象放在小部件中是搞砸了。在我将$list传递给小部件之前,是否需要对其执行一些操作?

您可以使用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',
    ),
  ),
));
其中model是您的模型,columns是您的列

findAll()返回数组,而cactivedaptaprovider返回数据提供程序

如果要使用find all,只需使用CArrayDataProvider转换数组即可

例如:

<?
php $this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>new CArrayDataProvider($list, array()),
 )); 
?>


使用CArrayDataProvider也是一种选择。但是,当它来自CActiveDataProvider时,排序就很容易了。

新的CActiveDataProvider调用是否会与小部件一起出现在视图中?回答我自己的评论:否。您在控制器中调用dataprovider并将变量传递给视图。这起作用了。谢谢你,先生。那完全错了。您不需要使用CactiveDataProvider,这并不是完全错误的。我把“必须”改为“可以”。你可以用任何一种。“大错特错”和你的否决票一样极端。你应该编辑一下他的问题。我没有用芬德尔。我用了他的例子,只是要求你通过AR模型。我会删除这个答案,并把它作为一个评论写在你的原始模型下。
$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',
    ),
  ),
));
<?
php $this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>new CArrayDataProvider($list, array()),
 )); 
?>