-
-
Notifications
You must be signed in to change notification settings - Fork 9.8k
Description
| Q | A |
|---|---|
| Bug report? | no |
| Feature request? | yes? |
| BC Break report? | no |
| RFC? | no |
| Symfony version | all |
I am working on application which define different route parameters depending on subdomain (for simplicity lets call them languages)
For example there are en, pl, gb sub domains. Which may override some global routes (defined in domain routing)
#routing.yml
_domain:
resource: routing_domain.yml
_subdomain:
resource: routing_subdomain.yml#routing_domain.yml
app_default_index:
path: /{language}/index
defaults: { _controller: AppBundle:Default:index }
methods: ['GET']
requirements:
language: 'en'
app_default_catch_all:
path: /{language}/{slug}
defaults: { _controller: AppBundle:Default:catchAll }
methods: ['GET']
#routing_subdomain.yml
app_default_index:
path: /{language}/index
defaults: { _controller: AppBundle:Default:index }
methods: ['GET']
requirements:
language: 'en|gb'
Because of priority of sub domain routes it has to be imported last (To override app_default_index from routing_domain.yaml)
Problem with this approach is that it puts app_default_index on the bottom of routes priority, causing that app_default_catch_all is before app_default_index.
----------------------- -------- -------- ------ --------------------
Name Method Scheme Host Path
----------------------- -------- -------- ------ --------------------
app_default_catch_all GET ANY ANY /{language}/{slug}
app_default_index GET ANY ANY /{language}/index
----------------------- -------- -------- ------ --------------------
It there any way that I am able to override app_default_index route, but keep its initial position?
I've found an place where this logic is set https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Routing/RouteCollection.php#L125
// we need to remove all routes with the same names first because just replacing them
// would not place the new route at the end of the merged array.
What is an reason that route should be put on end of array? How can I solve this problem, without using dynamic route loader and keep everything as simple as possible?