我有一个网站,有几个区域设置。例如:
我使用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;
}
这是一个很好的方法,还是让你有更好的主意?这似乎很难看......