2016-07-10 19 views
0

Ich versuche, kartik mpdf verwenden, um Daten in eine PDF-Datei zu drucken. Ich habe ein ähnliches Problem wie - yii2 basic printing a page in pdf. Ich habe die dort angegebene Lösung ausprobiert aber immer noch den Fehler bekommen. anzeigen Datei (der Code für die Schaltfläche) -undefined Variables Modell in kartik mpdf - yii2

<?= Html::a('<i class="fa glyphicon glyphicon-print"></i> Print Salary Statement', ['/salary/salary/printsalarystatement'], [ 
      'class'=>'btn btn-primary', 
      'target'=>'_blank', 
      'data-toggle'=>'tooltip', 
      'title'=>'Will open the generated PDF file in a new window' 
     ]);?> 

-Controller

public function actionPrintsalarystatement() { 

     $pdf = new Pdf([ 
     'content'=>$this->renderPartial('_printSalarystatement'), [ 
      'model'=> $model, 
      'mode'=> Pdf::MODE_CORE, 
      'format'=> Pdf::FORMAT_A4, 
      'orientation'=>Pdf::ORIENT_POTRAIT, 
      'destination'=> Pdf::DEST_BROWSER, 
      'cssFile' => '@vendor/kartik-v/yii2-mpdf/assets/kv-mpdf-bootstrap.min.css', 
      'cssInline'=> '.kv-heading-1{font-size:18px}', 
      'options'=> ['title'=> 'Salary Statement'], 
      'methods'=> [ 
        'setHeader'=>['Generated on: '.date("r")], 
        'setFooter'=>['|page {PAGENO}|'], 
        ] 
      ], 

     ]); 
     return $pdf->render(); 
    } 

Präsens view.php -

<?= Html::a('<i class="fa glyphicon glyphicon-print"></i> Print Salary Statement', ['/salary/salary/printsalarystatement?id=s_id'], [ 
      'class'=>'btn btn-primary', 
      'target'=>'_blank', 
      'data-toggle'=>'tooltip', 
      'title'=>'Will open the generated PDF file in a new window' 
     ]);?> 

Geschenk-Controller

public function actionPrintsalarystatement($id) { 

     //$model = Salary::find()->where(['s_id' => $id]); 
     $model = $this->findModel($id); 
     $searchModel = new SalarySearch(); 
     $dataProvider = $searchModel->search(Yii::$app->request->queryParams); 
     $data   = Salary::findOne($id); 
     $content = $this->renderPartial('_printSalarystatement', ['model' => $model,'dataProvider' => $dataProvider,'searchModel' => $searchModel,'data'=> $data]); 
     $pdf = new Pdf([ 
      'mode'=> Pdf::MODE_CORE, 
      'format'=> Pdf::FORMAT_A4, 
      'destination'=> Pdf::DEST_BROWSER, 
      'content'  => $content, 

     ]); 
     return $pdf->render(); 
    } 

Antwort

0

Wo sind Sie Gattungen ting die $model? Sie müssen das irgendwie weitergeben oder aufrufen.

+0

Ich bin nicht so sicher, was Sie reden. Es gibt 'model' => $ model, unter 'content' => $ this-> renderPartial ('_ printSalarystatement'). Bitte sagen Sie mir, welche Änderungen vorgenommen werden müssen. – Tanmay

+0

Ich kann Ihnen nicht wirklich sagen, was getan werden muss, ohne mehr Code zu sehen. Was ich frage ist, wo definierst du diese '$ model' Variable? D.h., woher kommen die Daten, die '_printSalarystatement' bevölkern? – ldg

+0

_printSalarystatement ist eine einfache Kopie der 'Ansicht' Datei. Die Daten stammen von Model Salary. Lass mich wissen, welchen Code du willst? – Tanmay

0
public function actionPrintsalarystatement() { 

    // you don't have the model for passing to the pdf object 
    // eg: 
     $model = YourModel::find()->where(['your_column' => 'your_value']); 


    $pdf = new Pdf([ 
     'content'=>$this->renderPartial('_printSalarystatement'), [ 
     'model'=> $model, // this $model is missing if you don assign a proper result to the this var like suggested above 
     'mode'=> Pdf::MODE_CORE, 

Basierend auf Ihren Kommentar:

  1. don'have Sie eine richtige $ id, so dass Sie nicht nothings
  2. Sie abrufen können $model = Salary::find()->where(['s_id' => '$id']); dies falsch ist, dass Sie die Anführungszeichen um $ id entfernen müssen auf diese Weise $model = Salary::find()->where(['s_id' => $id]);

Wenn Sie $ id auf der Seite, wo Sie die actionPrintsalarystatement rufen tye Sie an die Aktion übergeben konnte

zB:

/salary/salary/printsalarystatement?id=your_id 

und

public function actionPrintsalarystatement($id) { 
+0

Ich habe $ model = Gehalt hinzugefügt :: find() -> wo (['s_id' => '$ id']); wie ich gekommen bin. Aber es wirft den Fehler - Einstellung unbekannte Eigenschaft: kartik \ mpdf \ Pdf :: 0 – Tanmay

+0

@ Tanma Ich habe die Antwort mit einigen suggestio basierend auf Ihrem Kommentar – scaisEdge

+0

Jetzt bekomme ich Undefinierte Variable: ID. Bitte helfen Sie. – Tanmay

Verwandte Themen