TYPO3 - tx_news Speaking URL route if storage out of root page lead to error "The requested page does not exist"
TYPO3 - tx_news Speaking URL route if storage out of root page lead to error "The requested page does not exist"
已有具有页面树的网站
根网站 1
- 文件夹:新闻存储 1
- 页数:新闻 List/Detail 1
根网站 2
- 文件夹:新闻存储 2
- 页数:新闻 List/Detail 2
当我尝试在“News List/Detail 2”实体表单“News Storage 1”上显示其列表视图的工作时。但在详细视图中,我有错误“The requested page does not exist
” 而相反。
如果将 Storage 文件夹放在同一级别的根页面中 - 不起作用。
此外,如果从站点配置中删除 routeEnhancers
- 一切正常。很简单:
News:
type: Extbase
extension: News
plugin: Pi1
routes:
-
routePath: '/{news-title}'
_controller: 'News::detail'
_arguments:
news-title: news
defaultController: 'News::list'
aspects:
news-title:
type: PersistedAliasMapper
tableName: tx_news_domain_model_news
routeFieldName: path_segment
URL 路由似乎有问题。但是怎么解决呢?
我用的是TYPO3 9.5.22, tx_news 7.3.1.
问题。如何允许从其他根页面详细查看实体并使用 URL 路由?感谢您的建议:)
更新:Extbase 等其他路由也有同样的问题。如果从路由配置中跳过 SLUG,一切正常)。比如,使用 title 而不是 slug。应该是 slug 前缀或后缀逻辑的问题。
如此配置
News:
type: Extbase
extension: News
plugin: Pi1
routes:
-
routePath: '/{news-title}'
_controller: 'News::detail'
_arguments:
news-title: news
defaultController: 'News::list'
aspects:
news-title:
type: PersistedAliasMapper
tableName: tx_news_domain_model_news
routeFieldName: uid
可行,但 URL 不是最好看的(。为什么 slug 是越野车?
我在这里 找到了其他案例的答案。我很确定这种情况会出现在其他开发者面前。
slug配置问题:
原始配置
$GLOBALS['TCA']['tx_news_domain_model_news']['columns']['path_segment']['config'] = [
'type' => 'slug',
'size' => 50,
'generatorOptions' => [
'fields' => ['title'],
'replacements' => [
'/' => '-'
],
],
'fallbackCharacter' => '-',
'eval' => 'uniqueInSite',
'default' => ''
];
选项eval' => 'uniqueInSite'
如果你需要在跨网站上使用Entitties不工作,所以你需要替换为eval' => 'unique'
一切正常。我的情况也需要在路由配置中添加 routeValuePrefix: ''
,如
aspects:
fund_slug:
type: PersistedAliasMapper
tableName: tx_lloyd_domain_model_fund
routeFieldName: slug
routeValuePrefix: ''
但是对于 tx_news 第一次修复有效
已有具有页面树的网站
根网站 1
- 文件夹:新闻存储 1
- 页数:新闻 List/Detail 1
根网站 2
- 文件夹:新闻存储 2
- 页数:新闻 List/Detail 2
当我尝试在“News List/Detail 2”实体表单“News Storage 1”上显示其列表视图的工作时。但在详细视图中,我有错误“The requested page does not exist
” 而相反。
如果将 Storage 文件夹放在同一级别的根页面中 - 不起作用。
此外,如果从站点配置中删除 routeEnhancers
- 一切正常。很简单:
News:
type: Extbase
extension: News
plugin: Pi1
routes:
-
routePath: '/{news-title}'
_controller: 'News::detail'
_arguments:
news-title: news
defaultController: 'News::list'
aspects:
news-title:
type: PersistedAliasMapper
tableName: tx_news_domain_model_news
routeFieldName: path_segment
URL 路由似乎有问题。但是怎么解决呢?
我用的是TYPO3 9.5.22, tx_news 7.3.1.
问题。如何允许从其他根页面详细查看实体并使用 URL 路由?感谢您的建议:)
更新:Extbase 等其他路由也有同样的问题。如果从路由配置中跳过 SLUG,一切正常)。比如,使用 title 而不是 slug。应该是 slug 前缀或后缀逻辑的问题。
如此配置
News:
type: Extbase
extension: News
plugin: Pi1
routes:
-
routePath: '/{news-title}'
_controller: 'News::detail'
_arguments:
news-title: news
defaultController: 'News::list'
aspects:
news-title:
type: PersistedAliasMapper
tableName: tx_news_domain_model_news
routeFieldName: uid
可行,但 URL 不是最好看的(。为什么 slug 是越野车?
我在这里
slug配置问题:
原始配置
$GLOBALS['TCA']['tx_news_domain_model_news']['columns']['path_segment']['config'] = [
'type' => 'slug',
'size' => 50,
'generatorOptions' => [
'fields' => ['title'],
'replacements' => [
'/' => '-'
],
],
'fallbackCharacter' => '-',
'eval' => 'uniqueInSite',
'default' => ''
];
选项eval' => 'uniqueInSite'
如果你需要在跨网站上使用Entitties不工作,所以你需要替换为eval' => 'unique'
一切正常。我的情况也需要在路由配置中添加 routeValuePrefix: ''
,如
aspects:
fund_slug:
type: PersistedAliasMapper
tableName: tx_lloyd_domain_model_fund
routeFieldName: slug
routeValuePrefix: ''
但是对于 tx_news 第一次修复有效