Bug #89451
closedTYPO3 v9 Routing strange behaviour of routeEnhancers for controller arguments
0%
Description
I've been trying to setup Tx-News Routing by using defaultController and routes using "_controller" argument.
My Setup looks as follows (simplyfied to detail vs list view, but in fact there are more useful/required in practice).
routeEnhancers:
NewsPlugin:
type: Extbase
extension: News
plugin: Pi1
defaultController: 'News::list'
routes:
-
routePath: '/article/{title}'
_controller: 'News::detail'
_arguments:
title: news
-
routePath: '/{page}'
_controller: 'News::list'
_arguments:
page: '@widget_0/currentPage'
defaults:
page: '1'
requirements:
page: '\d+'
aspects:
title:
type: PersistedAliasMapper
tableName: tx_news_domain_model_news
routeFieldName: path_segment
page:
type: StaticRangeMapper
start: '1'
end: '999'
As you may notice each route defined in routes-section has cleanly declared it's own _controller-argument. Additionally there is defined defaultController for Controller-Action 'News::list' (I assume it's ment to be a fallback if no _controller-argument is given?!).
There have several configurations been tested mentioned in YAML-Routing documentations and Tx-News docs. None of them was able to work correctly.
Expectations:
I would expect that URI-Builder will use _controller-argument if given and defaultController only if there is no _controller-argument in the given route.
Current Results
Using defaultController with 'News::list' only the Pagination speaking URLs work! The News-Detail Links are not working (despite they are pointing to their correct Controller-Argument using _controller in their route-section).
Switching defaultController to 'News::detail' it's simply the same inverted. News-List pagination links do not result into a speaking-url. The detail-links work fine.
Conclusion
I think this must be a misbehaving. Currently the only workaround I could think of would be to use separate routeEnhancer one for each Controller-Action each pointing to defaultController to their controller-action (which makes _controller-argument in routes needless).
The correct behaving would be to primarily use _controller-argument for URL-Builder and URL-Resolver and if none is given using defaultController as fallback.
I think this is not a bug in http-foundation, but in YAML-Parsing or Routing-Wrappers around http-foundation.
Updated by Susanne Moog about 4 years ago
- Category changed from Frontend to Link Handling, Site Handling & Routing
Updated by Benni Mack over 1 year ago
- Status changed from New to Needs Feedback
Hey,
sorry for the late reply.
I just tested this in a latest v10 installation with news installed, and the configuration you posted works just as expected (and it works) - can you share your TypoScript / News configuration as well? Have you checked if the problem also occurs in v10+?
Thanks.
Benni.
Updated by Gabriel Kaufmann / Typoworx NewMedia over 1 year ago
Hello,
I think this ticket can be closed as it was opened years ago. I must have somehow solved or workarounded that problem or maybe didn't use speaking urls for news. I don't even remember which project this issue was arising :-D
Updated by Benni Mack over 1 year ago
- Status changed from Needs Feedback to Closed