2016-07-28 50 views
0

我想顯示數組中的視圖形式,但我不知道如何? 任何一個可以幫助我: 我的控制器代碼:我想在視圖中顯示陣列yii2

$query = new Query; 
$query 
    ->select(['Day_Name']) 
    ->from('days') 
    ->join('INNER JOIN','doctorsworkday','doctorsworkday.Day_id =days.dayid'); 
$command = $query->createCommand(); 
$dataProvider = $command->queryAll(); 
$dataProvider= array($dataProvider); 
return $this->render('view', 
    [ 
     'model' => $this->findModel($id), 
     'days'=>$days, 
     'doctorsworkday'=>$doctorsworkday, 
     'dataProvider' => $dataProvider, 
    ]) 

我的看法代碼:

<?= 
    DetailView::widget([ 
     'model' => $dataProvider, 
     'attributes' => [ 
      'Day_Name' 
     ], 
    ]) 
?> 

但其結果表明:(未設置)

當我使用vat_dump($ dataProvider)有一個數組..但我不知道如何顯示它

enter Var_Dump

回答

0

首先,您正在使用DetailView來顯示多個結果。 DetailView用於顯示文檔中所述的單個數據模型的詳細信息。您可以使用GridView來顯示多個結果。 GridView接受一個dataProvider而不是一個數組,所以你需要把你的數組變成一個dataProvider。

幸運的,你可以使用類ArrayDataProvider做到這一點:

$gridViewDataProvider = new \yii\data\ArrayDataProvider([ 
    'allModels' => $dataProvider, 
    'sort' => [ 
     'attributes' => ['Day_Name'], 
    ], 
    'pagination' => ['pageSize' => 10] 
]); 

這樣的事情應該工作。

然後你通過這個$ gridViewDataProvider到GridView這樣的:

<?= GridView::widget([ 
    'dataProvider' => $gridViewDataProvider, 
    'columns' => [ 
     'name' 
    ] 
]) ?> 

還要注意的是,在你的控制器,你包裹你的$數據提供程序與該行的數組:

$dataProvider= array($dataProvider); 

你應該刪除該行,然後一切都應該工作,據我所知。

+0

它工作正常..非常感謝你..我感謝你的幫助:) –