Форматирующий ответ yii2 не вызывается
Я пытаюсь использовать robregonm pdfresponseFormatter для создания PDF, проблема в том, что класс pdf никогда не вызывается как тип ответа формата.
'response' => [
'formatters' => [
'html' => [
'class' => 'yii\web\HtmlResponseFormatter',
],
'pdf' => [
'class' => 'robregonm\pdf\PdfResponseFormatter',
'mode' => '',
'format' => 'A4',
'defaultFontSize' => 0,
'defaultFont' => '',
'marginLeft' => 15,
'marginRight' => 15,
'marginTop' => 16,
'marginBottom' => 16,
'marginHeader' => 9,
'marginFooter' => 9,
]
]
],
....
$file = $this->getPdf($report);
....
private function getPdf($report){
Yii::$app->response->format = 'pdf';
Yii::$container->set(Yii::$app->response->formatters['pdf']['class']);
$this->layout = '//attachment';
return $this->render('pdf/actionplan', ['model' => $report]);
}
переменная $file содержит текст HTML из представления
2 ответа
К сожалению, я не смог заставить это расширение работать. Я заставил kartik pdf отлично работать
Я рекомендую вместо этого использовать расширение kartik.
Вы задаете неправильный вопрос. Конечно, в $file есть HTML, вы возвращаете HTML из своего представления.
Yii::$app->response->format = 'pdf';
работает, когда контроллер возвращает ответ браузеру.
Вы хотите спросить, почему функция контроллера (я надеюсь, что это в контроллере) не возвращает PDF, созданный из HTML.
Если вы просто хотите сохранить PDF, посмотрите, как я справляюсь с этим: https://github.com/Mihai-P/yii2-core/blob/master/components/Controller.php в функции actionPdf. Эта функция возвращает файл, который вы можете сохранить на сервере, если хотите.