如何使用OctoberCMS中的DynamicPDF插件从后端列表导出PDF

时间:2018-04-18 16:37:02

标签: export octobercms

我将使用DynamicPDF插件从OctoberCMS的后端列表中导出pdf。 但我不知道如何在后端列表中使用此插件和导出按钮。 所以我希望你的帮助。 谢谢。

1 个答案:

答案 0 :(得分:2)

是的,你可以,按照这个步骤。

  

<强> 1。添加导出链接

将此代码添加到您的_list_toolbar.htm [,您可以在插件和控制器的视图文件中找到此文件]

<div data-control="toolbar">
    <!-- ..some default code... -->

    <a href="<?= Backend::url('hardiksatasiya/timetracker/timelog/export') ?>" 
        class="btn btn-primary oc-icon-sign-out">export</a>

</div>
  

注意:用您的作者/插件/控制器替换link Url,然后保留导出操作名称,因为它是


  

<强> 2。在DynamicPDF Plugin

中为我们的PDF文件创建模板

创建新模板

设置它的代码:export-data-pdf [我正在使用此功能,但您可以使用自己的代码]

(确保我们稍后将使用此代码生成PDF)

设置它的HTML

<table border="1" style="border-collapse: collapse;">        
    <tr>
    {% for header in headers %}
        <th>{{ header }}</th>
    {% endfor %}
    </tr>        
    {% for record in records %}
    <tr>
        {% for data in record %}
            <td>{{ data }}</td>
        {% endfor %}
    </tr>
    {% endfor %}        
</table>

保存。

  

第3。在控制器中添加export命名操作 [As you said DynamicPDF is installed so we can use \Renatio\DynamicPDF\Classes\PDF in it]。此操作将生成您的PDF文件,我们从 STEP-1链接中调用此操作。

public function export()
{
    $lists = $this->makeLists();
    $widget = reset($lists);

    /* Add headers */
    $headers = [];
    $columns = $widget->getVisibleColumns();
    foreach ($columns as $column) {
        $headers[] = \Lang::get($column->label);
    }

    /* Add records */
    $getter = $this->getConfig('export[useList][raw]', false)
        ? 'getColumnValueRaw'
        : 'getColumnValue';

    $model = $widget->prepareModel();
    $results = $model->get();
    $records = [];
    foreach ($results as $result) {
        $record = [];
        foreach ($columns as $column) {
            $value = $widget->$getter($result, $column);
            if (is_array($value)) {
                $value = implode('|', $value);
            }
            $record[] = $value;
        }
        $records[] = $record;
    }
    return \Renatio\DynamicPDF\Classes\PDF::loadTemplate('export-data-pdf',
        ['headers' => $headers, 'records' => $records])->stream('export.pdf');
}
  

<强> 4。定制

由于此代码会读取您的list-config并根据它生成PDF,但如果您想customize,则可以编辑给定的export操作,并根据该操作生成数据集。您可以PDF template changes插件DynamicPDF进行操作。

如有疑问请发表评论。