首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用OctoberCMS中的DynamicPDF插件从后端列表导出

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

Stack Overflow用户
提问于 2018-04-19 00:37:02
回答 1查看 573关注 0票数 2

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

EN

回答 1

Stack Overflow用户

发布于 2018-04-19 20:06:59

是的,你可以,只需要按照下面的步骤操作。

1.添加导出的链接

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

代码语言:javascript
复制
<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替换为您的,然后保留导出操作名称不变

DynamicPDF Plugin中为我们的

文件创建模板

创建新模板

设置它的代码:export-data-pdf 我正在使用这个,但是你可以使用你自己的

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

设置为HTML

代码语言:javascript
复制
<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>

省省吧。

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

代码语言:javascript
复制
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. Customization

因为这段代码将读取您的list-config并根据它生成PDF,但是如果您想要customize它,您可以编辑给定的export操作并根据它生成您的数据集。和你可以从DynamicPDF插件做的PDF template changes

如果有任何疑问,请发表意见。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49904827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档