【发布时间】:2015-11-22 11:47:40
【问题描述】:
我正在使用 FriendsOfCake CakePDF 插件和 wkhtmltopdf 来将我的视图呈现为 PDF。 我还使用他们的搜索插件通过表单过滤视图数据。
目前,当我在视图中打印数据时,它总是将所有视图数据呈现到 PDF 中,而不仅仅是屏幕上显示的过滤数据。
有没有办法做到这一点?我在插件文档中找不到任何提到这种情况的内容。 PDF插件似乎总是以默认状态重新加载页面,或者从索引函数加载默认查询而不是过滤数据。由于这是我的第一个 CakePDF 项目,我并没有真正得到我必须做的事情来让它呈现过滤后的数据。有人可以帮忙吗?
到目前为止,我的主要文件如下所示:
class PaintingsController extends AppController
{
public function index()
{
$query = $this->Paintings
->find('search',
$this->Paintings->filterParams($this->request->query))
->contain(['Artists',
'Tickets' => function ($q) {
return $q->where(['Tickets.active' => false]);
}
]);
$this->viewBuilder()->options([
'pdfConfig' => [
'orientation' => 'portrait',
'filename' => 'paintings.pdf'
]
]);
$this->set('paintings', $this->paginate($query));
$this->set('_serialize', ['paintings']);
}
}
class PaintingsTable extends Table
{
public function searchConfiguration()
{
$search = new Manager($this);
$search->like('title', [
'before' => true,
'after' => true,
'field' => $this->aliasField('title'),
'filterEmpty' => true
])->value('property', [
'field' => $this->aliasField('property'),
'filterEmpty' => true
])->like('artist_name', [
'before' => false,
'after' => true,
'field' => $this->Artists->target()->aliasField('surname'),
'filterEmpty' => true
])->value('technique', [
'field' => $this->aliasField('technique'),
'filterEmpty' => true
]);
return $search;
}
}
In Template\Paintings\index.ctp
... data in tables ...
<?= $this->Html->link('Save as PDF',[
'action' => 'index',
'_ext' => 'pdf'],[
'class' => 'create-pdf-link',
'target' => 'blank'
]) ?>
然后所有内容都会在 Templates\Paintings\pdf\index.ctp 中呈现,而无需应用过滤。
【问题讨论】: