yii2 创建视图以显示模型

yii2 create view to display model

我正在尝试在项目中实现 demos.krajee。com/grid-demo 但我无法为详细视图创建网格。

它是一个网格,当使用扩展的 expandRow 功能时,我需要从 ID 中的另一个 table 库获取所有相关记录(主 - 详细场景)

在控制器中我有这个功能,它可以很好地获取特定 ID 的所有记录:

    public function actionDetail() {
    $searchModel = new AttendanceSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
    if (isset($_POST['expandRowKey'])) {
        $IDcustomers = Yii::$app->request->post('expandRowKey');

    $model = Attendance::find()
            ->where(['IDcustomers' => $IDcustomers])
            ->all();            
        return $this->renderPartial('_attendance-details', ['model'=>$model]);

    } else {
        return '<div class="alert alert-danger">No data found</div>';
    }
}

现在的问题是如何从 $model 创建视图 (_attendance-details) 并将所有记录显示在网格中。

如果我将 DetailView 与 $model 的第一个元素一起使用,效果很好:

        <?= DetailView::widget([
    'model' => $model[0],
    'attributes' => [
        'IDattendance',
        'IDcustomers',
        'date',
        'doctor',
        'lawyer',
    ],
]) ?>

但是当我尝试使用网格时,我需要数据提供者,但我无法让它与我传递的 $model 一起工作。

我是 yii 的新手,所以任何指南都将不胜感激。


我试过 vitalik 并且工作完美

controller中设置:

public function actionDetail()
{        
    if (isset($_POST['expandRowKey'])) {
        $IDcustomers = Yii::$app->request->post('expandRowKey');

        $model = Attendance::find()
            ->where(['IDcustomers' => $IDcustomers]);
        $dataProvider = new ActiveDataProvider([
            'query' => $model,
            'pagination' => [
                'pageSize' => 20,
            ],
        ]);

        return $this->renderPartial('_attendance-details', ['dataProvider' => $dataProvider]);

    } else {
        return '<div class="alert alert-danger">No data found</div>';
    }
}

在视图中:

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        'IDattendance',
        'IDcustomers',
        'date',
        'doctor',
        'lawyer',      
    ],
]);?>