Yii2-advanced:dataProvider

时间:2015-12-30 08:24:28

标签: yii2-advanced-app

我想在siteController中增加dataProvider。也就是说,在每次迭代时,我的dataProvider应该增加1&重命名为dataProvider1,dataProvider2,dataProvider3,....&等等。 我试图将$ i附加到dataProvider,但它说'dataProvider无法转换为String ...!'

我的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循环&amp;在'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']);
                                    },
                                ],
                            ]
                   ]); ?>

请帮我解决我的问题。

1 个答案:

答案 0 :(得分:0)

我在不使用gridview的情况下解决了我的问题。如下 -

我的SiteController -

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,
        ]);
    }

使用此代码我从db获取dataProvider中的所有记录。 (请注意,我在我的&#39; BusinessMainCategoriesSearch&#39;模型中使用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>';

        } ?>

对我来说很有用这是最简单的方法。