J'ai essayé d'implémenter MPDF sur la fonction de recherche du modèle avancé Yii2 mais ne semble pas donner le résultat que je voulais. Ce que je veux, c'est quand je mets la valeur à l'intérieur du textField(sales_id)
, je devrais pouvoir utiliser le bouton d'impression en utilisant l'extension MPDF où la condition est que les données montrées dans mpdf ne doivent contenir qu'une valeur de sales_id similaire dans ses champs, comme ceci image ci-dessous:Comment imprimer/afficher les critères de recherche en cours en PDF en utilisant Yii2 et mpdf?
J'ai fait la méthode dans mon contrôleur comme ceci:
public function actionPrintPerSales()
{
// trying to get the sales_id post value
$request = Yii::$app->request;
$sales_id = $request->post('sales_id');
$model = new PiutangCustomer();
// Your SQL query filter here
$dataProvider = new ActiveDataProvider([
'query' => PiutangCustomer::find()
->where(['status_piutang' => '0'])
->andWhere(['sales_id'] => $sales_id)
->orderBy(['customer_id' => SORT_ASC])
]);
$content = $this->renderPartial('_print-per-sales', ['model', 'dataProvider' => $dataProvider]);
// setup kartik\mpdf\Pdf component
$pdf = new Pdf([
// set to use core fonts only
'mode' => Pdf::MODE_CORE,
// 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,
// format content from your own css file if needed or use the
// enhanced bootstrap css built by Krajee for mPDF formatting
'cssFile' => '@vendor/kartik-v/yii2-mpdf/assets/kv-mpdf-bootstrap.min.css',
// any css to be embedded if required
'cssInline' => '.kv-heading-1{font-size:18px}',
// set mPDF properties on the fly
'options' => ['title' => 'Cetak Laporan Piutang Menurut Customer'],
// call mPDF methods on the fly
'methods' => [
'SetHeader'=>['Laporan Piutang - NAMA TOKO/PERUSAHAAN/CV'],
'SetFooter'=>['Powered by PFSOFT | {PAGENO}'],
]
]);
/*------------------------------------*/
Yii::$app->response->format = \yii\web\Response::FORMAT_RAW;
$headers = Yii::$app->response->headers;
$headers->add('Content-Type', 'application/pdf');
/*------------------------------------*/
// return the pdf output as per the destination setting
return $pdf->render();
}
Pour la vue, je fait quelque chose comme ceci:
<?php echo $this->render('_search-per-sales', ['model' => $searchModel]); ?>
Et sous forme _search-per-vente Voir:
<?php $form = ActiveForm::begin([
'action' => ['print-per-sales'],
'method' => 'post',
]); ?>
<?= $form->field($model, 'sales_id')->textInput() ?>
<div class="form-group">
<?= Html::submitButton(Yii::t('app', 'PRINT'), ['class' => 'fa fa-print btn btn-warning']) ?>
</div>
<?php ActiveForm::end(); ?>
Et comme pour la vue rendu des actionPrintPerSales (_print-par-vente):
<?= GridView::widget([
'dataProvider' => $dataProvider,
//'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
// 'customer_id',
[
'label' => 'Nama Customer',
'value' => 'customer.first_name',
],
[
'attribute' => 'nilai_piutang',
'contentOptions' => ['style' => 'text-align:right'],
'format'=>['decimal',0],
],
[
'attribute' => 'total_bayar',
'contentOptions' => ['style' => 'text-align:right'],
'format'=>['decimal',0]
],
[
'attribute' => 'sisa_piutang',
'contentOptions' => ['style' => 'text-align:right'],
'format'=>['decimal',0]
],
'faktur',
[
'attribute' => 'tanggal_jatuh_tempo',
'contentOptions' => ['style' => 'text-align:center'],
'format' => ['date', 'php:d-M-Y']
],
'sales_id',
[
'label' => 'Nama Sales',
'value' => function ($data){ return $data->kodeSales->nama; },
],
],
]); ?>
Il y a Quelque chose ne va pas avec mon filtre de requête SQL, à l'intérieur du contrôleur. Je peux dire à mon MPDF travaille parce que quand je commente la clause where:
// ->andWhere('sales_id' = $sales_id)
Le pdf fonctionne, seulement il montre toutes les données sans filtrage sales_id.
merci pour l'aide, mais j'ai tout réussi en corrigeant la clause where -> andWhere (['sales_id'] => $ model-> sales_id) en -> etWhere (['sales_id' => $ model- > sales_id]) – JoenMarz
@JoenMarz. est ma réponse est juste alors marquer comme accepté .. sinon si la marque utile est utile .. – scaisEdge
le tableau doit être -> andFilterWhere (['sales_id' => $ model-> sales_id]) – JoenMarz