Symfony2 JMSI18nRoutingBundle - HTTP / HTTPS取决于区域设置

时间:2015-07-17 12:07:54

标签: symfony routing twig locale

我有一个网站,有几个区域设置。例如:

我使用JMSI18nRoutingBundle。这是我的配置:

jms_i18n_routing:
    locales:
        - fr_FR
        - en_FR
        - de_DE
        - es_ES
    hosts:
        fr_FR: mywebsite.fr
        en_FR: en.mywebsite.fr
        es_ES: mywebsite.es
        de_DE: mywebsite.de

我的某些区域设置位于HTTPS中,其他区域设置没有,例如此示例中的es_ES。

https://mywebsite.fr中,我想生成一个指向es_ES网站的链接,或者反之,生成到es_ES网站的fr_FR的https链接。

实际上,我有一个带有Redis的noSQL数据库,这是一个哈希foreach语言环境,其值为' https'是或否,我从getUrl重写RoutingExtension方法来检查HTTPS:

public function getUrl($name, $parameters = array(), $schemeRelative = false)

{
    $url = $this->container->get('router')->generate($name, $parameters, $schemeRelative ? UrlGeneratorInterface::NETWORK_PATH : UrlGeneratorInterface::ABSOLUTE_URL);

    if (isset($parameters['_locale'])) {
        $locale = $parameters['_locale'];
    } else {
        $locale = $this->container->get('request')->getLocale();
    }

    // (localeGet will get the value of 'https' in Redis for this locale)
    if (false === $this->localeGet('https', $locale)) {
        $url = str_replace('https://', 'http://', $url);
    } else {
        $url = str_replace('http://', 'https://', $url);
    }

    return $url;
}

这是一个很好的方法,还是让你有更好的主意?这似乎很难看......

0 个答案:

没有答案