Yii2-продвинутый: ArrayDataProvider

Я хочу использовать ArrayDataProvider со следующим кодом siteController. Я написал следующий код, но он не работает.
Вот мой actionIndex:

public function actionIndex()
{
$query = new \yii\db\Query;
$query->select('*')->from('business_main_categories');
$query->createCommand();

$dataProviders = [];

foreach ($query as $category) {
$dataProviders[] = new ArrayDataProvider([
'allModels' => $category,
'sort' => false,
'pagination' => false,
]);
}

return $this->render('index', [
'dataProvider' => $dataProviders,
]);
}

И хотите, чтобы это повторялось в gridView. Итак, я написал следующий код (я не знаю, является ли он правильным или нет):

Вот мой index.php:

<?php
$dataProviders[] = 'dataProvider';
foreach ($dataProviders as $dataProvider) {
echo GridView::widget([
'dataProvider' => $dataProvider,
'summary' => '',
'columns' => [
[
'attribute' => 'bmc_image',
'format' => 'html',
'label' => '',
'value' => function ($data) {
return Html::img($data['bmc_image'],
['width' => '210px', 'height' => '190px']);
},
],
]
]);
}
?>

2

Решение

Я решил свою проблему без использования gridview. Следующее —

Мой сайт Контроллер —

public function actionIndex()
{
$searchModel = new BusinessMainCategoriesSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider->pagination->pageSize = $dataProvider->getTotalCount();   //-1 : disable

return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}

используя этот код, я получаю все записи в dataProvider из моей базы данных.
(Обратите внимание, что я использую ActiveDataProvider в моей модели BusinessMainCategoriesSearch)

И мой index.php —

<?php
$m = $dataProvider->getModels();
foreach ($m as $dp) {
echo "<img src = '".$dp['bmc_image']."' />";
echo '<center><font color = "white">'.$dp['bmc_name'].'<font/></center>';
}
?>

Это отлично сработало для меня & это самый простой способ сделать это.

2

Другие решения

контроллер

public function actionIndex()
{
$query = new \yii\db\Query;
$dataProvider = new ArrayDataProvider([
'allModels' =>$query->from('business_main_categories')->all(),
]);

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

Индекс

<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
[
'attribute' => 'bmc_image',
'format' => 'html',
'value' => function ($data) {
return Html::img($data['bmc_image'],['width' => '210px', 'height' => '190px']);
},
],
],
]); ?>
1

По вопросам рекламы [email protected]