php - tag - Yii2: cómo agregar el modelo y el id del modelo en mPDF
yii2 helpers url (2)
Necesito generar pdf desde mi punto de vista, estoy usando kartik mPDF,
Controlador :
public function actionInvoicesPrint()
{
$pdf = new Pdf([
''mode'' => Pdf::MODE_CORE, // leaner size using standard fonts
''content'' => $this->renderPartial(''view'', [''model'' => $model, ''mode'' => Pdf::MODE_CORE,
''format''=> Pdf::FORMAT_A4,
''orientation''=> Pdf::ORIENT_POTRAIT,
''destination''=> Pdf::DEST_BROWSER]),
]);
return $pdf->render();
}
Obteniendo error Undefined variable: model
. Intenté como se muestra arriba pero obtengo el mismo error.
Ver:
public function actionView($id)
{
$searchModel = new InvoicesSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$data = Invoices::findOne($id);
return $this->render(''view'', [
''model'' => $this->findModel($id),
''dataProvider'' => $dataProvider,
''searchModel'' => $searchModel,
''data'' => $data,
]);
}
En su actionInvocePrint no tiene un $ modelo asignado
a continuación se muestra una muestra de mi pdf de trabajo (kartik mPDF como tu)
$model = $this->findModel($id);
// get your HTML raw content without any layouts or scripts
//$this->layout = ''pdfmain'';
$content = $this->renderPartial(''_mpdf_report_scheda'', [
''model'' => $model,
''imglink'' => $imglink,
]);
if ($print ) {
$setJS = ''this.print();'';
}
else {
$setJS ='''';
}
// setup kartik/mpdf/Pdf component
$pdf = new Pdf([
// set to use core fonts only
''mode'' => Pdf::MODE_BLANK,
// A4 paper format
''format'' => Pdf::FORMAT_A4,
// portrait orientation
''orientation'' => Pdf::ORIENT_PORTRAIT,
// stream to browser inline
''destination'' => Pdf::DEST_BROWSER,
// your html content input
''content'' => $content,
Como puede ver en esta parte del código ... el modelo se obtiene antes que todo y luego con este $ modelo se define un renderPartial con la vista adecuada ...
para pasar el $ id tu acción debe ser
public function actionInvoicesPrint($id)
y para esto tu llamada URL debe ser
Url::to([''/your-controller/Invoices-print'' , ''id'' => $your_id]);
Solución de trabajo completa
public function actionInvoicesPrint($id)
{
$model = $this->findModel($id);
$searchModel = new InvoicesSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$data = Invoices::findOne($id);
$content = $this->renderPartial(''view'', [''model'' => $model,''dataProvider'' => $dataProvider,''searchModel'' => $searchModel,''data''=> $data]);
$pdf = new Pdf([
// set to use core fonts only
''mode'' => Pdf::MODE_BLANK,
// A4 paper format
''format'' => Pdf::FORMAT_A4,
// portrait orientation
''orientation'' => Pdf::ORIENT_PORTRAIT,
// stream to browser inline
''destination'' => Pdf::DEST_BROWSER,
// your html content input
''content'' => $content,
]);
return $pdf->render();
}
PARA disparar la actionInvoicesPrint()
controlador actionInvoicesPrint()
<?php
echo Html::a(''<i class="fa glyphicon glyphicon-hand-up"></i> Privacy Statement'', [''/invoices/invoices-print'', ''id'' => $model->id], [
''class''=>''btn btn-danger'',
''target''=>''_blank'',
''data-toggle''=>''tooltip'',
''title''=>''Will open the generated PDF file in a new window''
]);
?>