我想在yii2中显示视图中的数组

时间:2016-07-28 11:13:21

标签: php yii2-advanced-app

我想在视图中显示数组,但我不知道怎么做? 谁能帮我 : 我的控制器代码是:

$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

1 个答案:

答案 0 :(得分:2)

首先,您使用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包装在一个数组中:

$dataProvider= array($dataProvider);

你应该删除那一行,然后一切都应该尽我所能。