使用Yii2 GridView和数据数组

mrr*_*ich 4 php yii2

我有一个数组:

$arr = ['ID' => 'A1', 'Description' => 'Item to be sold', ...]
Run Code Online (Sandbox Code Playgroud)

在控制器中:

$provider = new ArrayDataProvider([
'allModels' => $arr,
//'sort' =>['attributes' => ['ID', 'Description'],],
'pagination' => ['pageSize' => 5]
]);
$this -> render('index', ['provider' => $arr]);
Run Code Online (Sandbox Code Playgroud)

在视图(index.php)中:

GridView::widget([
'dataProvider' => $provider,
]);
Run Code Online (Sandbox Code Playgroud)

页面上没有结果.哪里错了?

aro*_*hev 6

代码中的错误很少.

1) $arr应该有这样的结构:

$arr = [
    ['ID' => 'A1', 'Description' => 'Item to be sold'],
    ...
],
Run Code Online (Sandbox Code Playgroud)

2)在render您传递的参数$arr中$provider,应该是:

$this->render('index', ['provider' => $provider]);
Run Code Online (Sandbox Code Playgroud)

3)你return之前错过了陈述render:

return $this->render('index', ['provider' => $provider]);
Run Code Online (Sandbox Code Playgroud)

另外,我不建议在箭头周围使用空格.

4)您没有指定任何列GridView.你可以添加ID并Description喜欢这样:

GridView::widget([
    'dataProvider' => $provider,
    'columns' => [
        'ID',
        'Description',
    ],
]);
Run Code Online (Sandbox Code Playgroud)

5)最后你不会将GridView回显到屏幕上.应该:

echo GridView::widget([...]);
Run Code Online (Sandbox Code Playgroud)

要么

<?= GridView::widget([...]) ?>
Run Code Online (Sandbox Code Playgroud)