Yii2-高级:数据提供者

Yii2-advanced : dataProvider

我想在 siteController 中增加我的 dataProvider。也就是说,在每次迭代中,我的 dataProvider 应该递增 1 并重命名为 dataProvider1、dataProvider2、dataProvider3、....& 等等。 我尝试将 $i 附加到 dataProvider,但它显示“dataProvider 无法转换为字符串...!”

我的actionIndex如下:

public function actionIndex()
{
        $query = new \yii\db\Query;
        for ($i = 1; $i <= 20; $i++) {
            $query->select('*')->from('business_main_categories')->where(['bmc_id' => $i]);
            $query->createCommand();

            $dataProvider.$i = new ActiveDataProvider([
                'query' => $query,
                'pagination' => false,
            ]);

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

而且,我还想在我的 'index.php' 中使用该 dataProvider 进行迭代;我试图插入一个 for 循环并在 'echo' 中写入所有语句,但我无法完成它。

我在'index.php'中的访问方式如下:

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

请帮我解决问题。

我没有使用 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 中的所有记录。 (请注意,我在 'BusinessMainCategoriesSearch' 模型中使用 ActiveDataProvider)

而且,我的 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>';

        } ?>

这对我来说效果很好,而且这是最简单的方法。