2016-03-25 27 views
1

Ich möchte Daten in einer Tabelle in View anzeigen, und die Daten werden von DataProvider bereitgestellt, aber ich möchte Yii GridView nicht verwenden, da die Tabelle schwer zu sehen ist, ich möchte ein verwenden Tabelle meiner Wahl und zeige diese Daten darin an, ich versuche foreach Schleife zu benutzen, um die Daten durchzuliefern, die vom Datenprovider geliefert werden, da es ein Array ist, aber ich erhielt eine Fehlermeldung (unbekannte Eigenschaft erhalten: yii \ db \ ActiveQuery :: product_id) unten ist mein CodeAnzeigen von Daten in Gridview in Yii2

Controller code 

public function actionIndex() 
{ 
    $searchModel = new ProductSearch(); 
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams); 

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

view generated by CRUD 
    <?php 

use yii\helpers\Html; 
use yii\grid\GridView; 

/* @var $this yii\web\View */ 
/* @var $searchModel backend\models\ProductSearch */ 
/* @var $dataProvider yii\data\ActiveDataProvider */ 

$this->title = 'Products'; 
$this->params['breadcrumbs'][] = $this->title; 
?> 
<div class="product-index"> 

    <h1><?= Html::encode($this->title) ?></h1> 
    <?php // echo $this->render('_search', ['model' => $searchModel]); ?> 

    <p> 
     <?= Html::a('Add new Product', ['create'], ['class' => 'btn btn-success']) ?> 
    </p> 

    <?= GridView::widget([ 
     'dataProvider' => $dataProvider, 
     'filterModel' => $searchModel, 
     'columns' => [ 
      //['class' => 'yii\grid\SerialColumn'], 

      'product_id', 
      //'type_id', 
      'name', 
      'descr', 
      //'status', 
      'price', 
      'image', 
      // 'added_at', 
      // 'updated_at', 
      'views', 
      // 'reviews', 


      ['class' => 'yii\grid\ActionColumn'], 
     ], 

    ]); ?> 

</div> 

aber ich würde dies .. unten Ansicht verwenden möchten, um meine Daten, dank für jede Hilfe aus

<?php 

use yii\helpers\Html; 



?> 


    <div class="box"> 
       <div class="box-header"> 
        <h3 class="box-title">Data Table With Full Features</h3> 
       </div><!-- /.box-header --> 
       <div class="box-body"> 
        <table id="example1" class="table table-bordered table-striped"> 
        <thead> 
         <tr> 
         <th>ID</th> 
         <th>Name</th> 
         <th>Description</th> 
         <th>Price</th> 
         <th>Image</th> 
         <th>Action</th> 

         </tr> 
        </thead> 
        <tbody> 

         <tr> 
       <?php foreach ($dataProvider as $datas): ?> 
         <td><?= $datas->product_id?></td> 
         <td><?= Html::encode("{$datas->name}")?></td> 
         <td><?= Html::encode("{$datas->descr}")?></td> 
         <td><?= Html::encode("{$datas->price}")?></td> 
         <td><?= Html::encode("{$datas->image}")?></td> 
         <td>C</td> 
       <?php endforeach ?> 
         </tr> 

        </tbody> 
        <tfoot> 
         <tr> 
         <th>ID</th> 
         <th>Name</th> 
         <th>Description</th> 
         <th>Price</th> 
         <th>Image</th> 
         <th>Action</th> 
         </tr> 
        </tfoot> 
        </table> 
       </div><!-- /.box-body --> 
       </div><!-- /.box --> 

Antwort

1

Für die Modelle in Datenprovider retrive Sie getModels()

posts = $provider->getModels(); 

    $models = $dataProvider->getModels(); 

und dann Schleife über diese Modelle

<?php foreach ($models as $datas): ?> 
       <td><?= $datas->product_id?></td> 
    <?php endforeach ?> 
verwenden sollten
Verwandte Themen