2016-07-10 5 views
0

Я пытаюсь использовать kartik mpdf для печати данных в pdf-файл. Я столкнулся с такой же проблемой, как - yii2 basic printing a page in pdf. Я пробовал решение, данное там, но все еще получаю ошибку. Просмотр файла (код для кнопки) -Неопределенная переменная модель в 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' 
     ]);?> 

Контроллер

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

Present 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' 
     ]);?> 

Present Контроллер

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

ответ

0

Где ты роды ting $model? Вам нужно как-то передать или вызвать это в функцию.

+0

Я не уверен, что вы говорите. Существует модель «model» => $, ниже «content» => $ this-> renderPartial ('_ printSalarystatement'). Скажите, пожалуйста, какие изменения необходимо выполнить. – Tanmay

+0

Я не могу сказать вам, что нужно делать, не видя больше кода. Я спрашиваю, где вы определяете переменную '$ model'? I.e., где находятся данные, заполняющие '_printSalarystatement'? – ldg

+0

_printSalarystatement - это простая копия файла 'view'. Данные поступают из Model Salary. Дайте мне знать, какой код вы хотите? – 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, 

Основываясь на ваш комментарий:

  1. вы don'have правильный $ идентификатор, так что вы не можете получить Nothings
  2. у вас есть $model = Salary::find()->where(['s_id' => '$id']); это неправильно, то вы должны удалить кавычки $ ид таким образом $model = Salary::find()->where(['s_id' => $id]);

Если у вас есть $ идентификатор на странице, где вы называете actionPrintsalarystatement Тая вы могли бы перейти к действию

например:

/salary/salary/printsalarystatement?id=your_id 

и

public function actionPrintsalarystatement($id) { 
+0

Я добавил $ model = Salary :: find() -> где (['s_id' => '$ id']); как я понял. Но это забрасывает ошибку - Установка неизвестного свойства: kartik \ mpdf \ Pdf :: 0 – Tanmay

+0

@Tanmay У меня есть ответ на некоторые предложения на основе вашего комментария – scaisEdge

+0

Теперь я получаю неопределенную переменную: id. Пожалуйста помоги. – Tanmay

Смежные вопросы