【问题标题】:How to export PDF from back-end list using DynamicPDF plugin in OctoberCMS如何在 OctoberCMS 中使用 DynamicPDF 插件从后端列表中导出 PDF
【发布时间】:2018-04-18 16:37:02
【问题描述】:

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

【问题讨论】:

    标签: export octobercms


    【解决方案1】:

    是的,您可以,只需按照以下步骤操作即可。

    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 替换为您的 author/plugin/controller,然后保留 export 操作名称原样


    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 插件来实现。

    如有任何疑问,请发表评论。

    【讨论】:

      猜你喜欢
      • 2020-02-23
      • 2017-06-17
      • 2019-04-20
      • 1970-01-01
      • 2021-01-29
      • 2017-12-03
      • 1970-01-01
      • 2014-11-29
      • 2016-09-25
      相关资源
      最近更新 更多