2

CGridViewウィジェットで表示したい mysql のテーブルがあります。これまでの私のコードは次のとおりです。

私のコントローラーファイル(もちろん切り取られています):

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ウィジェットに渡す前に何かしなければならないことはありますか?

4

3 に答える 3

3

findAll() は配列を返しますが、CActiveDataProvider は dataProvider を返します。

すべて検索を使用する場合は、CArrayDataProvider を使用して配列を変換するだけです。

例:

<?
php $this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>new CArrayDataProvider($list, array()),
 )); 
?>
于 2011-04-27T17:30:54.990 に答える
2

CActiveDataProviderYiiのクラスを使用できます。このようなもの:

$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',
    ),
  ),
));

モデルはモデルであり、列は列です。

于 2011-04-26T19:53:23.427 に答える
0

CArrayDataProvider の使用もオプションです。しかし、CActiveDataProvider から来る場合、並べ替えは簡単です。

于 2011-04-27T18:01:54.360 に答える