2016-07-28 45 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

它工作正常..非常感谢你..我感谢你的帮助:) –