带有 typenum 的控制器操作

问题描述 投票:0回答:1

我在typo3 中遇到问题,无法通过typenum 访问我的控制器操作。我用的是typo3 v12。我的路线中有以下内容

  - routePath: '/rss.xml'
    _controller: 'Article::feed'

das ruft folgende methode auf

public function feedAction(): ResponseInterface
{
    $articles = $this->getArticles();
    $this->view->assign('articles', $articles);
    $response = $this->responseFactory->createResponse()
        ->withBody($this->streamFactory->createStream($this->view->render()));
     throw new PropagateResponseException($response, 200);
}

如果我现在调用domain.com/news/rss.xml,我会得到我的XML 视图。如何使用 typenum 获得相同的结果?

我已经尝试过一些,但我的文章总是为空

另外,是否可以直接通过domain.com/rss.xml获取XML格式的文章,而不是在新闻页面附加/rss.xml?

xml typo3 extbase typenum
1个回答
0
投票

一般来说,您会设置一个新的 PAGE 对象,其 typeNum 不同于 0。 完整的示例位于文档中:https://docs.typo3.org/p/georgringer/news/11.4/en-us/Tutorials/BestPractice/Rss/Index.html

在大多数情况下,实际上不需要条件,因为如果 typeNum 匹配,就会启动 PAGE。

如果您有其他配置代码,例如覆盖 tt_content 的换行或特定于此 typeNum 的插件设置,那么我会像这样放置一个条件(TYPO3 V12):

[request && request.getPageArguments()?.getPageType() == {$plugin.tx_news.rss.channel.typeNum}]

如果您仍然想为其提供说话路径,只需在站点配置中添加静态映射即可:

routeEnhancers:
   PageTypeSuffix:
     type: PageType
     map:
        rss.xml: 9818

为了让您的打字稿调用 extbase 控制器操作,我将创建一个插件并在打字稿中调用它,如下所示:

feed_page = PAGE
feed_page {
   typeNum = 9818
   10 = USER
   10.userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
   10.extensionName= ExtensionName
   10.pluginName = PluginName
   10.vendorName = Vendor

或者像新闻示例中那样直接注入插件。

© www.soinside.com 2019 - 2024. All rights reserved.