2015-12-30 4 views
2

Я хочу увеличить свои данныеProvider в siteController. То есть, на каждой итерации мой dataProvider должен быть увеличен на 1 &, переименованный в dataProvider1, dataProvider2, dataProvider3, .... & и так далее. Я попытался добавить $ i к dataProvider, но он говорит: «dataProvider не может быть преобразован в String ...!»Yii2-advanced: 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, 
      ]); 
     } 
    } 

И, я также хочу, чтобы пользователь что DataProvider в мой 'index.php' с итераций; Я попытался вставить цикл 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']); 
            }, 
           ], 
          ] 
        ]); ?> 

Пожалуйста, помогите мне решить мою проблему.

+1

Не могли бы вы объяснить, зачем вам 20 поставщиков данных? – arogachev

+0

Я должен извлечь 20 записей из моей базы данных. –

+1

В этом случае вам не нужны 20 поставщиков данных. Вам нужен один поставщик с соответствующим запросом. – arogachev

ответ

1

Я решил проблему без использования 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, 
     ]); 
    } 

с помощью этого кода я получаю все записи в 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>'; 

     } ?> 

Он работал большой для меня & это самый простой способ сделать это.

Смежные вопросы