2015-01-07 3 views
3

У меня есть массив:Использование Yii2 GridView с массивом данных

$arr = ['ID' => 'A1', 'Description' => 'Item to be sold', ...] 

В контроллере:

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

В силу (index.php):

GridView::widget([ 
'dataProvider' => $provider, 
]); 

И нет никакого результата на странице. Где это неправильно?

ответ

5

В коде есть несколько ошибок.

1)$arr должны иметь структуру, как это:

$arr = [ 
    ['ID' => 'A1', 'Description' => 'Item to be sold'], 
    ... 
], 

2) В разделе render параметров вы прошли $arr вместо $provider, должно быть:

$this->render('index', ['provider' => $provider]); 

3) Вы пропустили return заявление до render:

return $this->render('index', ['provider' => $provider]); 

Также я не рекомендую использовать пробелы вокруг стрелы.

4) Вы не указали ни одного столбца в GridView. Вы можете добавить ID и Description так:

GridView::widget([ 
    'dataProvider' => $provider, 
    'columns' => [ 
     'ID', 
     'Description', 
    ], 
]); 

5) И, наконец, вы не вторя GridView на экране. Должно быть:

echo GridView::widget([...]); 

или

<?= GridView::widget([...]) ?> 
+0

Вы правы, но как вы можете фильтровать столбцы с GridView? – Ydakilux

+1

Если у вас есть другая проблема, пожалуйста, создайте для этого отдельный вопрос. Эта проблема решена. – arogachev

Смежные вопросы