如何使用自定义数组在 yii 中创建网格


How to create grid in yii with custom array?

>我在php中创建了一个数组。

    Array
    (
        [0] => Array
            (
                [ip_addr] => 152.12.40.205
                [Management_col-2] => Success
                [Management_col-3] => Success
            )
    [1] => Array
        (
            [ip_addr] => 152.12.40.206
            [Management_col-2] => Success
            [Management_col-3] => Error
        )
    [2] => Array
        (
            [ip_addr] => 152.12.40.207
            [Management_col-2] => NA
            [Management_col-3] => Success
        )
    [3] => Array
        (
            [ip_addr] => 152.12.40.209
            [Management_col-2] => Success
            [Management_col-3] => Success
        )
);

我将有动态列,如 ip_addr、Management_col-2、....依此类推,具有相应的动态值。

我想在YII的网格视图中使用它。

    $nc3DataProvider = new CArrayDataProvider($alldata);

    $this->widget('zii.widgets.grid.CGridView', array(
    'id' => 'nc3-audit-grid',
    'dataProvider' => $nc3DataProvider,
));

我还想在桌子上使用过滤器。

请帮帮我。

提前非常感谢你。

您可以使用 CArrayDataProvider 这个示例

控制器

public function actionGridViewArray() {
 $rawData=array(
         array('id'=>1, 'username'=>'from', 'email'=>'array'),
         array('id'=>2, 'username'=>'test 2', 'email'=>'hello@example.com'),
     );
     // or using: $rawData=User::model()->findAll();
     $arrayDataProvider=new CArrayDataProvider($rawData, array(
         'id'=>'id',
         /* 'sort'=>array(
             'attributes'=>array(
                 'username', 'email',
             ),
         ), */
         'pagination'=>array(
             'pageSize'=>10,
         ),
     ));
     $params =array(
         'arrayDataProvider'=>$arrayDataProvider,
     );
     if(!isset($_GET['ajax'])) $this->render('grid_view_array', $params);
     else  $this->renderPartial('grid_view_array', $params);
 }
视图

(网格视图)

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider' => $arrayDataProvider,
    'columns' => array(
        array(
            'name' => 'username',
            'type' => 'raw',
            'value' => 'CHtml::encode($data["username"])'
        ),
        array(
            'name' => 'email',
            'type' => 'raw',
           'value' => 'CHtml::link(CHtml::encode($data["email"]), "mailto:".CHtml::encode($data["email"]))',
        ),
    ),
));

并动态地构建柱子

foreach ($header as $cols){ 
   $column[] = array( 'name'=> $cols, 
   'value'=>'isset($data['''.$cols.'''])?$data['''.$cols.''']:""', ); 
}

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider' => $arrayDataProvider,
    'columns' => $column
));