2016-04-08 3 views
1

Мне нужно создать PDF из моего зрения, Im использованием Картик MPDF,Yii2: как добавить модель и модель идентификатор в MPDF

Контроллер:

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(); 
} 

Получение ошибки Undefined variable: model. Я попытался, как показано выше, но получал ту же ошибку.

Вид:

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, 
     ]); 
    } 

ответ

1

В вашем actionInvocePrint вы не имеете $ модель назначен

ниже приведен пример из моего рабочего PDF (Картик MPDF нравится ваш)

$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, 

Как вы можете видеть в этой части кода. Модель получена до всех, а затем с этой $ -моделью определена рендеринг с правильным видом.

для прохождения $ ID вы действия должны быть

public function actionInvoicesPrint($id) 

и для этого вам URL вызов должен быть

Url::to(['/your-controller/Invoices-print' , 'id' => $your_id]); 
+0

Могу ли я использовать это в своем 'actionView()' без создания 'actionInvoicesPrint()'? – JKLM

+0

, так как эти предложения уже упомянуты вами в аналогичном вопросе. Я не смог присвоить модель 'id' в' actionInvoicesPrint() 'из-за этой ошибки получения.' Undefined variable: id' как назначить 'id' для' actionInvoicesPrint() ' – JKLM

+0

У меня есть ответ – scaisEdge

1

Полный Рабочий раствор

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(); 
    } 

В целях запуска контроллера 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' 
]); 
?> 
Смежные вопросы