0

我需要一些关于 OctoberCMS 在前端使用 DynamicPDF 插件的帮助:

拥有以下 10 月 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()但没有任何效果!

有任何想法吗 ?

4

2 回答 2

1

一种解决方法是创建一个专用于 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();
    }
于 2017-02-01T18:57:08.010 回答
1

你好费尔南多·巴罗卡尔,

我注意到您的代码中有一个错误。您必须使用范围解析运算符来加载模板。

您的代码:

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

用。。。来代替:

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

希望这会帮助你。

谢谢!

于 2017-04-12T05:20:13.063 回答