【发布时间】:2011-12-15 13:17:25
【问题描述】:
我是 Symfony2 的新手,我正在寻找选择带有我的主机名 TLD 的语言。 (以适当的方式)
我已经找到了用表单更改语言的方法:http://symfony.com/blog/play-with-the-user-language
但是当新用户连接时我需要能够选择语言:
- www.hostname.fr => fr
- www.hostname.it => 它
- www.hostname.co.uk => zh
现在我添加一个服务监听器,为每个请求触发:
services:
kernel.listener.domain_langue_listener:
class: acme\DemoBundle\Listener\DomainLangueListener
tags:
- { name: kernel.event_listener, event: kernel.request, method: onDomainParse }
跟班:
namespace acme\DemoBundle\Listener;
class DomainLangueListener
{
public function onDomainParse(Event $event)
{
$request = $event->getRequest();
$session = $request->getSession();
preg_match('/[^.]+$/', $request->getHost(), $match);
$session->setLocale($match[0]);
}
}
此侦听器有效,但我想使用一些参数来定义哪个 TLD 与哪种语言匹配,但是在侦听器中我无法像这样访问容器:
$this->container->getParameter('tld_allowed');
我想知道是否有其他方法可以访问侦听器中的参数 或者通过主机名选择语言的其他方式
感谢您的回答。
【问题讨论】: