dongqiang2024 2015-12-31 07:45
浏览 41
已采纳

Yii2-advanced:ArrayDataProvider

I want to use ArrayDataProvider with the following code of siteController. I wrote the following code but it doesn't work. Here is my 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,
        ]);
}

And want it to iterate in gridView. So, I wrote the following code (I don't know whether it's correct or not) :

Here is my 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条回答 默认 最新

  • dq_609586475 2016-01-04 07:33
    关注

    I solved my problem without using gridview. As follows -

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

    using this code I get all records in dataProvider from my db. (Note that, I'm using ActiveDataProvider in my 'BusinessMainCategoriesSearch' model)

    And, my index.php is -

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

    It worked great for me & it's a easiest way to do so.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况