【发布时间】:2021-02-19 07:38:49
【问题描述】:
我目前正在开展一个在各个页面上使用新闻扩展的项目。为了摆脱神秘的 URL,我将以下代码添加到我的 config.yaml:
routeEnhancers:
News:
type: Extbase
extension: News
plugin: Pi1
routes:
- routePath: '/{news_title}'
_controller: 'News::detail'
_arguments:
news_title: news
defaultController: 'News::detail'
aspects:
news_title:
type: PersistedAliasMapper
tableName: tx_news_domain_model_news
routeFieldName: path_segment
这给了我想要的某些页面的结果,但对于其他页面,它会引发 FE 错误:
(1/1) Symfony\Component\Routing\Exception\InvalidParameterException
Parameter "tx_news_pi1__news" for route "tx_news_pi1_0" must match ".+" ("" given) to generate a corresponding URL.
此错误出现在某些页面上,其中包括新闻插件并应显示列表视图。奇怪的是,由于这是一个常规页面,它应该有一个常规 URL,无需上述代码即可完美运行。更奇怪的是,当手动输入所需的演讲 URL 时,我可以访问新闻详细信息页面。因此,新闻详细视图的 URL 重写适用于每个页面,但它会破坏其他列表视图页面的 URL。
我花了几个小时试图找出错误的来源并发现:
- 如果我将
settings.categoryConjunction从OR更改为AND,列表视图有效,但逻辑上显示错误结果 - 当我更改
settings.categories时也会发生同样的事情,即当我添加一个完整的类别而不是一个子类别时
Click me to see backend configuration
结论:
-
myproject.local/somepagewithnews工作 -
myproject.local/somepagewithnews/detail/articleWithSpeakingUrl工作 -
myproject.local/anotherpagewithnews不起作用 -
myproject.local/anotherpagewithnews/articleWithSpeakingUrl有效。请注意,两者之间没有出现/detail/。添加它会导致Page does not exist-Error。
没有代码,每个页面和每个新闻文章都可以工作,不同之处在于文章(不是具有列表视图的页面)具有神秘的 URL。
我希望我的问题是可以理解的,并且这里有人可以帮助我,因为这让我发疯了。 提前致谢!!
【问题讨论】:
-
问题是您的增强器适用于每个 tx_news_pi1 插件,并假定它是 News::detail。您应该为列表页面添加路由,或者(更简单)只需添加
limitToPages: [<IDs of detail pages>] -
感谢您的回答!我已经尝试过了,但不幸的是在访问相应的列表页面时发生了同样的错误。 (列表页的 ID 为 46,详细信息页的 ID 为 142)。但是当我输入
limitToPages: [142]时我无法访问 46 -
你试过
limitToPages: [46,142]了吗? -
不幸的是也不起作用
标签: url yaml frontend typo3 rewriting