Buena práctica sobre cómo configurar routeEnhancers para la lista y la vista detallada de ext: news?
Condición previ
The ext: el plugin de vista de lista de noticias está en la página www.domain.com/news [ID 9] y la vista detallada en www.domain.com/article [ID 39].
Siguiendo el ejemplo oficial (docs.typo3.org)Probé el Ejemplo de "Extbase Plugin Enhancer" de la descripción de la función, pero eso causó algunos problemas:
El enlace del navegador de la página 2 tiene un cHash: news / list / 2? CHash = 123456789 El enlace del navegador de la página 2 a la página 1 tiene muchos parámetros get: news? Tx_news_pi1% 5Baction% 5D = list & tx_news_pi1% 5Bcontroller% 5D = News & cHash = 123456789. Sin routeEnhancer, solo serían "noticias" sin ningún parámetro get. El enlace a la vista detallada tiene un cHash: artículo / blog / 9? CHash = 52e8a4b7c6318cfe0273e7eab374e9aeLas URL tienen segmentos no deseados ("lista" + "blog")La URL de Acticle no contiene el título de la noticiaUna de las causas de algunos de estos problemas podría ser que el paginador no especifica el controlador en sus enlaces: news? Tx_news_pi1 [@ widget_0] [currentPage] = 2 & cHash = 123456789
Mi enfoque, que ya soluciona los problemas mencionadosDividí esto en dos routeEnhancers separados (Extbase + Plugin), eliminé los segmentos, "defaultController", "default", "requisitos" y agregué "aspectos":
routeEnhancers:
NewsDetail:
type: Extbase
limitToPages: [39]
extension: News
plugin: Pi1
routes:
- { routePath: '/{news_title}', _controller: 'News::detail', _arguments: {'news_title': 'news'} }
aspects:
news_title:
type: PersistedAliasMapper
tableName: 'tx_news_domain_model_news'
routeFieldName: 'path_segment'
NewsList:
type: Plugin
limitToPages: [9]
routePath: '/{@widget_0/currentPage}'
namespace: 'tx_news_pi1'
aspects:
'@widget_0/currentPage':
type: StaticRangeMapper
start: '1'
end: '1000'
Mis inquietudes con respecto a este enfoque:
No estoy seguro de si tendría una ventaja (rendimiento o seguridad) agregar algunos "valores predeterminados" y "requisitos" y si realmente es una buena práctica dividir esto en dos Enhancers de ruta separados. Limita la cantidad de páginas de vista de lista a un máximo de 1000 (admito que esto es mucho). Un valor más alto dará como resultado un error:Range es más grande que 1000 artículos.Si hay una barra inclinada / en el título de la noticia (por ejemplo, "Informe mensual 2018/07"), path_segment generado automáticamente también contendrá una barra inclinada ("mensualmente-informe-2018/07") y esto lleva al siguiente error en la lista vista:Parameter "tx_news_pi1__news" para la ruta "tx_news_pi1_0" debe coincidir con "[^ /] ++" ("informe-mensual-2018/07" dado) para generar una URL correspondiente.