使用动作在流体中添加链接

时间:2017-11-23 14:23:31

标签: php typo3 fluid extbase

我为Typo3创建了一个extbase扩展,它可以使用pdfviewhelpers从网站创建一个pdf。

我在控制器中实现了这个定义动作,而且非常简单。

现在我正在尝试使用扩展名“tx_news”执行此操作。我将所有内容与我自己的扩展进行了比较,将操作添加到控制器并调整了模板,但我无法创建pdf。

流体链接如下所示:

<f:link.action action="pdf" arguments="{news:newsItem}" class="btn btn-expose" target="_blank">PDF</f:link.action>

NewsController.php中的类如下:

**
 * action pdf
 *
 * @param \GeorgRinger\News\Domain\Model\News $news
 * @return void
 */
public function pdfAction(\GeorgRinger\News\Domain\Model\News $news = null){
        $demand = $this->createDemandObjectFromSettings($this->settings);
        $demand->setActionAndClass(__METHOD__, __CLASS__);

        $assignedValues = [
            'newsItem' => $news,
            'currentPage' => (int)$currentPage,
            'demand' => $demand,
        ];

        $assignedValues = $this->emitActionSignal('NewsController', self::SIGNAL_NEWS_PDF_ACTION, $assignedValues);
        $this->view->assignMultiple($assignedValues);

        Page::setRegisterProperties($this->settings['pdf']['registerProperties'], $news);
        if (!is_null($news) && is_a($news, 'GeorgRinger\\News\\Domain\\Model\\News')) {
            Cache::addCacheTagsByNewsRecords([$news]);
        }
}

有人暗示为什么这不起作用?

顺便说一句:我知道在原始代码中乱搞不是一个好主意,它只是4个有趣

2 个答案:

答案 0 :(得分:1)

要创建指向其他扩展程序的链接,您必须完成pluginNameextensionNamecontroller以及pageUid(插件所在的页面)

<f:link.action action="pdf" controller="News" pluginName="pi1" extensionName="news" arguments="{news: newsItem}">Generate pdf</f:link.action>

答案 1 :(得分:1)

v2.0.0起,扩展名pdfviewhelpers附带了news扩展名的内置模板。只需添加静态TypoScript模板pdfviewhelpers - EXT:news,然后像这样链接到PDF视图:

<n:link newsItem="{newsItem}" settings="{settings}" title="{newsItem.title}" configuration="{additionalParams: '&type=28032013'}">
        Download as PDF
</n:link>

还可以自定义或完全覆盖PDF模板。