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条)

报告相同问题?

悬赏问题

  • ¥15 孟德尔随机化结果不一致
  • ¥15 深度学习残差模块模型
  • ¥50 怎么判断同步时序逻辑电路和异步时序逻辑电路
  • ¥15 差动电流二次谐波的含量Matlab计算
  • ¥15 Can/caned 总线错误问题,错误显示控制器要发1,结果总线检测到0
  • ¥15 C#如何调用串口数据
  • ¥15 MATLAB与单片机串口通信
  • ¥15 L76k模块的GPS的使用
  • ¥15 请帮我看一看数电项目如何设计
  • ¥23 (标签-bug|关键词-密码错误加密)