Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

[Routing] Implement host per locale #30617

Copy link
Copy link
Closed
@remmel

Description

@remmel
Issue body actions

Description
Be able to configure host per locale in the same way that we can configure prefix per locale.
Thus we will be able to indicate that the

History
Prefix/path per locale is possibe from Symfony 4.1. Development has been done in that PR.

Vocabulary used
In www.website.be/nl/offers/index.html :

  • host: www.website.be
  • path-prefix: /nl (can be also named path/folder/directory/prefix)
  • full-prefix: www.website.be/nl (host + path-prefix = full-prefix)

Configuration
Below are 2 examples of how to configure that, can we agree with one and how it will work ?

  1. Host + path-prefix in same configuration
    Set both the host and path-prefix (full-prefix) :
site:
    resource: '../src/Controller/'
    prefix:
        en: '/site'
        es: '://www.website.es'
        nl_BE: '://www.website.be/nl/'
    type: annotation

That above code without es: '://www.website.es' row and ://www.website.be is working in Symfony 4.1

Note that we are using :// to be able to detect later that the configuration is using a full-prefix and not only a prefix-path.

Questions:

  • Must it begin with :// or // ?
  • Extract host from configuration :
    • starts with ":// => it's a full-prefix (host + path-prefix)
    • otherwise => it's only a path prefix
    • in the really specific case that we want to have the following url possible www.website.com/://www.website.com/site/index.html only specifying the path-prefix the conf will be
[...]
    prefix:
        en: '/://www.website.com/site'
  • Others solutions to detect that the conf starts with a host ?
    • regex?
    • the conf can only starts with
      • "/" for a path-prefix
      • "://" for a host or full-prefix
      • otherwise, it throws a configuration error
  • What happens when the host is also on the non locale level ? (Eg: @Route(host="www.website.com") or host: www.website.com)
  • Should we rename prefix:?
  • In the above configuration what happens if url starts with www.website.es/site ? Throws a configuration error ? Thus mixing configurations will be possible if there is no "host" only configuration.
  1. Host in separate configuration
site:
    resource: '../src/Controller/'
    prefix:
        en: '/site'
        es: '/sitio'
    host:
        es: 'www.website.es'
    type: annotation

Questions:

  • What happens when both the locale host and non locale host are set ? Use the 1. locale host - 2. non locale host - 3. Throws an exception

Quick code to implement the feature with 1) conf :
YAMLFileLoader:197

const URL_KEY = '://';
//if the it starts with ://
if (substr($localePrefix, 0, strlen(self::URL_KEY)) === self::URL_KEY) {
  $posFirstSlash = strpos($localePrefix, '/', strlen(self::URL_KEY));
  $localeHost = substr($localePrefix, strlen(self::URL_KEY), $posFirstSlash-strlen(self::URL_KEY));
  $localePrefix = substr($localePrefix, $posFirstSlash);
  $localizedRoute->setHost($localeHost);
}

Related with :

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      Morty Proxy This is a proxified and sanitized view of the page, visit original site.