【问题标题】:Inserting Active Record Data into Yii's CGRidView widget将 Activerecord 数据插入 Yii CGRidView 小部件
【发布时间】:2011-04-26 19:19:51
【问题描述】:

我在 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,
 )); ?>

我收到以下错误:

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

这是CBaseListView.php文件的源代码。

我很确定我把列表对象放在小部件中搞砸了。在将 $list 传递给小部件之前,我需要对它做些什么吗?

【问题讨论】:

    标签: php mysql yii yii-components zii-widgets


    【解决方案1】:

    findAll() 返回一个 array,而 CActiveDataProvider 返回一个 dataProvider。

    如果你想使用 find all,你所要做的就是使用 CArrayDataProvider 转换数组

    示例:

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

    【讨论】:

      【解决方案2】:

      你可以使用CActiveDataProvider Yii 的Class。 像这样的:

      $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 是您的列。

      【讨论】:

      • 新的 CActiveDataProvider 调用会在小部件的视图中吗?
      • 回答我自己的评论:不。您在控制器中调用 dataprovider 并将变量传递给视图。这行得通。谢谢先生。
      • 那是完全错误的。你不需要使用 CActiveDataProvider
      • 这不是完全错误的。我将“必须”改为“可以”。你可以使用任何一个。 “完全错误”与您的反对票一样极端。你应该刚刚编辑了他的问题。我最终没有使用 findall。我用他的例子,只需要你通过 AR 模型。
      【解决方案3】:

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

      【讨论】:

      • 我会删除这个答案,并把它写成你原来的评论。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-08
      • 1970-01-01
      • 1970-01-01
      • 2012-11-01
      • 2023-04-10
      相关资源
      最近更新 更多