我有一个报告表和列report_id, reference_number
和report_name
。有些数据具有相同的reference_number
。它通过视图按钮显示在gridview中。
我想要的是当我单击特定行的视图按钮时,将显示该行的数据以及具有相同reference_number
个i的行。截至目前,我可以显示具有相同reference_number
的所有记录,但我想要的是当我点击特定行时,它将显示在顶部,其他详细信息将在其下方。
$gridColumns = [
['class' => 'yii\grid\SerialColumn'],
'report_id',
'reference_no',
'subject',
'doc_date',
[
'label' => 'For',
'value' => 'namefor.fullName',
],
[
'label' => 'From',
'value' => 'namefrom.fullName',
],
'drawer_id',
'user_id',
'doc_name',
[
'class' => 'yii\grid\ActionColumn',
],
[
'attribute' => '',
'format' => 'raw',
'value' => function($data)
{
return Html::a('', ['report/download', 'id' => $data->reference_no],['class' => 'fa fa-download']);
}
],
];
echo
// ExportMenu::widget([
// 'dataProvider' => $dataProvider,
// 'columns' => $gridColumns
// ]);
GridView::widget([
'dataProvider'=> $dataProvider,
'filterModel' => $searchModel,
'columns' => $gridColumns,
'responsive'=> true,
'hover'=> true,
'pjax'=> true,
'pjaxSettings'=>[
'neverTimeout'=>true,
]
]);
控制器
public function actionIndex()
{
$searchModel = new reportDetailsSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
public function actionView($id)
{
$dataProvider = new ActiveDataProvider([
'query' => reportDetails::find()
->select('reference_no, report_id')
->where(['report_id' => $id]),
'pagination' => [
'pageSize' => 10,
],
]);
return $this->render('view', [
'model' => $this->findModel($id),
'dataProvider' => $dataProvider,
]);
}
答案 0 :(得分:0)
我假设你有一个唯一的密钥report_id
。
每个reference_number
都有一个唯一的report_id
。
这样填充网格并将report_id
作为查询按钮中的查询字符串传递。
然后从控制器的操作中获取该值。
例如:
<?php
$gridColumns = [
['class' => 'yii\grid\SerialColumn'],
'report_id',
'reference_no',
'subject',
'doc_date',
[
'label' => 'For',
'value' => 'namefor.fullName',
],
[
'label' => 'From',
'value' => 'namefrom.fullName',
],
'drawer_id',
'user_id',
'doc_name',
[
'class' => 'yii\grid\ActionColumn',
'header' => 'Actions',
'contentOptions'=> [ 'style' => 'vertical-align: center;width:8%!important;'],
'template' => '{view}',
'buttons' =>
[
'view' => function ($url, $model, $key)
{
return Html::a(' <span class="fa fa-download"></span> ', ['report/download', 'id' => $model->reference_no],
[
'title' => Yii::t('app', 'View'),
'class' => 'btn btn-primary btn-xs',
'data-method' => 'post',
]);
},
],
],
/*[
'attribute' => '',
'format' => 'raw',
'value' => function($data)
{
return Html::a('', ['report/download', 'id' => $data->reference_no],['class' => 'fa fa-download']);
}
], */
];
echo GridView::widget([
'dataProvider'=> $dataProvider,
'filterModel' => $searchModel,
'columns' => $gridColumns,
'responsive'=> true,
'hover'=> true,
'pjax'=> true,
'pjaxSettings'=>[
'neverTimeout'=>true,
]
]);
?>
然后你的行动在Contorller中下载
<?php
public function actionDownload($id) {
//var_dump($id); die;
//$emodel = Yourmodel::find()->where('id="' . $id . '"')->all();
if (Yii::$app->request->post()) {
// var_dump(Yii::$app->request->post()); die;
var_dump($_POST); die;
// Do your stuff
}
}
return $this->render('download');
]);
}
?>