OctoberCMS DynamicPDF On Frontend не работает

Мне нужна помощь с OctoberCMS с использованием плагина DynamicPDF во внешнем интерфейсе:

Иметь следующую страницу CMS за октябрь:

title = "Dues"
url = "/account/dues"
layout = "profile"
is_hidden = 0
==
<?php
use Corp\Proj\Models\Account;
use Renatio\DynamicPDF\Classes\PDF;
use Renatio\DynamicPDF\Models\PDFTemplate;

function onInvoiceDownload()
{
    $id = post("id");
    $account = Account::find($id);

    return PDF::loadTemplate("proj:invoice", ['data' => $account])->stream();
}
?>
==
{% set account = user.account %}
<button data-request="onInvoiceDownload" data-request-data="id: {{ account.id }}"  class="btn btn-default">
    <i class="fa fa-download"></i> Download
</button>

Ожидаемым поведением будет загрузка файла PDF при нажатии кнопки, но он загружается и умирает молча ... ничего не видно. Пробовал с ->download() и ->stream(), но ничего не работает!

Любые идеи ?


person Fernando Barrocal    schedule 31.01.2017    source источник


Ответы (2)


одним из способов обхода является создание новой страницы, посвященной созданию PDF-файла.

title = "PDF Dues"
url = "/account/dues/pdf/:id"
layout = "profile"
is_hidden = 0
==
<?php
use Corp\Proj\Models\Account;
use Renatio\DynamicPDF\Classes\PDF;
use Renatio\DynamicPDF\Models\PDFTemplate;

function onStart()
    {
        $id= $this->param('id');    
        $account = Account::find($id);
        return PDF::loadTemplate("proj:invoice", ['data' => $account])->stream();
    }
person Pierre-André Vullioud    schedule 01.02.2017

Привет Фернандо Баррокаль,

Я заметил одну ошибку в вашем коде. Вы должны использовать оператор разрешения области для загрузки шаблона.

Ваш код:

return PDF::loadTemplate("proj:invoice", ['data' => $account])->stream();

Заменить на:

return PDF::loadTemplate("proj::invoice", ['data' => $account])->stream();

Надеюсь, это поможет вам.

Спасибо!

person AddWeb Solution Pvt Ltd    schedule 12.04.2017
comment
Первый параметр метода loadTemplate — это строка, представляющая код шаблона. Это не оператор разрешения области видимости. Код шаблона предоставляется при создании шаблона. Использование двоеточий в этом коде необязательно. Если ОП дал своему шаблону код proj:invoice, то это не может быть ошибкой. - person Hugo Wijdeveld; 15.03.2018