【发布时间】:2018-04-18 16:37:02
【问题描述】:
我将使用 DynamicPDF 插件从 OctoberCMS 的后端列表中导出 pdf。 但我不知道如何在后端列表中使用这个插件和导出按钮。 所以我希望你的帮助。 谢谢。
【问题讨论】:
标签: export octobercms
我将使用 DynamicPDF 插件从 OctoberCMS 的后端列表中导出 pdf。 但我不知道如何在后端列表中使用这个插件和导出按钮。 所以我希望你的帮助。 谢谢。
【问题讨论】:
标签: export octobercms
是的,您可以,只需按照以下步骤操作即可。
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 插件来实现。
如有任何疑问,请发表评论。
【讨论】: