Digamos que temos 2 extensões TYPO3, cada uma contendo um plugin Extbase e cada uma fornecendo uma configuração YAML do roteador:
# Route config for myext_aaa which contains the Extbase plugin "Checkout" using CheckoutController
routeEnhancers:
MyextAaaCheckout:
type: Extbase
extension: myext_aaa
plugin: Checkout
routes:
-
routePath: '/{localized-order-new}/{course-name}'
_controller: 'Checkout::newOrder'
_arguments:
course-name: 'course'
aspects:
course-name:
type: PersistedAliasMapper
tableName: my_course_table
routeFieldName: slug
localized-order-new:
type: LocaleModifier
default: 'order'
localeMap:
- locale: 'de_DE.*'
value: 'buchen'
# Route config for myext_zzz which contains the Extbase plugin "CheckoutXxx" using CheckoutXxxController
routeEnhancers:
MyextZzzCheckoutXxx:
type: Extbase
extension: mzext_zzz
plugin: CheckoutXxx
routes:
-
routePath: '/{zzz-localized-order-new}/{course-name}'
_controller: 'CheckoutXxx::newOrder'
_arguments:
course-name: 'course'
aspects:
course-name:
type: PersistedAliasMapper
tableName: my_course_table
routeFieldName: slug
zzz-localized-order-new:
type: LocaleModifier
default: 'order'
localeMap:
- locale: 'de_DE.*'
value: 'buchen'
Agora temos 2 páginas, cada uma contendo um dos plugins:
- Na página1 o plugin "Checkout" está localizado:
my-site.net/page1/buchen/how-to-code-course
- Na página2 o plugin "CheckoutXxx" está localizado:
my-site.net/page2/buchen/how-to-code-course
O problema
Abrir o URL da página1 resulta em erro, pois CheckoutController::orderNewAction(Course $course)
falta o $course
parâmetro! Parece que a configuração da rota /buchen/{course-name}
de "mzext_zzz" é usada (ou substitui a primeira definição). Mas por que? O roteador não leva extension: mzext_zzz
em plugin: CheckoutXxx
consideração a definição da rota?
Ou em outras palavras: como é possível que a rota /buchen/{course-name}
possa ser utilizada por dois plugins completamente diferentes de duas extensões diferentes?