【发布时间】:2019-06-28 18:40:27
【问题描述】:
我正在使用 kartik-mpdf 库生成我的网格视图的 pdf,问题是我想将 $dataProvider 和 $searchModel 从 index.php 传递到将作为 pdf 文档 (pdf.php) 呈现器的视图,因此,当我搜索索引并单击“通用 pdf”按钮时,它会调用 AlumnoController 上的操作 GenerarPdf 并将索引操作的相同 $searchModel 和 $dataProvider 加载到 pdf.php gridview 并生成 pdf 文件。
这是代码。 AlumnoController.php - actionGenerarPdf
public function actionGenerarPdf($searchModel, $dataProvider)
{
Yii::$app->response->format = \yii\web\Response::FORMAT_RAW;
$formatter = \Yii::$app->formatter;
$pdf = new Pdf([
'mode' => Pdf::MODE_CORE, // leaner size using standard fonts
'destination' => Pdf::DEST_BROWSER,
//Se renderiza la vista "pdf" (que abrirá la nueva ventana)
'content' => $this->renderPartial('pdf', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider
]),
'options' => [
// any mpdf options you wish to set
],
'methods' => [
'SetTitle' => 'SIE: Sistema de Informacion Estudiantil',
'SetSubject' => 'Generating PDF files via yii2-mpdf extension has never been easy',
'SetHeader' => ['SIE: Sistema de Información Estudiantil||Generado el: ' . $formatter->asDate(date("r"))],
'SetFooter' => ['|Página {PAGENO}|'],
'SetAuthor' => 'SIE: Sistema de información Estudiantil',
'SetCreator' => 'Juan Carlos Reyes Suazo',
// 'SetKeywords' => 'Sie, Yii2, Export, PDF, MPDF, Output, yii2-mpdf',
]
]);
return $pdf->render();
}
index.php
<p>
<?php
if (User::isSuperAdmin(Yii::$app->user->identity->id)){
echo Html::a('Crear Alumno', ['create'], ['class' => 'btn btn-success']);
echo Html::a('Ver PDF', [
'/alumno/generar-pdf',
'searchModel' => $searchModel,
'dataProvider' => $dataProvider
],
[
'class' => 'btn btn-success',
'target'=>'_blank',
'data-toggle'=>'tooltip',
// 'title'=>'Will open the generated PDF file in a new window'
]);
}
?>
</p>
pdf.php
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
//'id',
['attribute' => 'nombre',
'format' => 'raw',
'value'=>function ($data) {
return Html::a($data['nombre'],['alumno/view', 'id' => $data['id']]);
},
],
//'rut',
['attribute' => 'curso_id',
'format' => 'raw',
'value'=>function ($data) {
return Html::a($data['curso_id'],['curso/view', 'id' => $data['curso_id']]);
},
],
//'fecha_nacimiento',
//'fono',
//'direccion',
//'email:email',
//'apoderado',
['attribute' => 'apoderado',
'format' => 'raw',
'value'=>function ($data) {
if ($data->apoderado_id != null)
return Html::a($data->apoderado->nombre, ['apoderado/view', 'id' => $data['apoderado_id']]);
else
return null;
},
],
//'apoderado_suplente',
//'fono_apoderado',
//'fono_apoderado_sup',
//'antecedentes_medicos',
//'grupo_sanguineo',
//'programa_integracion',
//'taller_artistico',
//'anotaciones',
['class' => ActionColumn::className(), 'template' => '{update} {delete}'],
],
]); ?>
我收到错误请求 (#400)
Se recibieron datos erróneos para el parametro “searchModel”
任何帮助将不胜感激。
【问题讨论】:
-
请添加所有英文内容,当您使用
POST请求但未提交CSRF token以及用于防止交叉的表单或请求时,会引发400网站脚本伪造
标签: yii2 yii2-basic-app