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',
],
]);?>
我正在尝试在项目中实现 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',
],
]);?>