我想重定向用户:
如果用户不是法语或英语,则默认重定向为:www.website.com/en /
目前,我创建了一个LocaleListener
:
昏暗\ MxBundle \监听\ LocaleListener.php:
class LocaleListener implements EventSubscriberInterface
{
private $defaultLocale;
public function __construct($defaultLocale, $availableLocales, $container)
{
$this->defaultLocale = $defaultLocale;
$this->availableLocales = $availableLocales;
$this->container= $container;
}
public function onKernelRequest(GetResponseEvent $event)
{
$request = $event->getRequest();
if (!$request->hasPreviousSession())
{
$locale = $event->getRequest()->getPreferredLanguage($this->availableLocales);
$event->getRequest()->setLocale($locale);
$Session = $this->container->get('session');
$Session->set('_locale', $locale);
return;
}
# try to see if the locale has been set as a _locale routing parameter
if ($locale = $event->getRequest()->getPreferredLanguage($this->availableLocales)) {
$request->getSession()->set('_locale', $locale);
} else {
# if no explicit locale has been set on this request, use one from the session
$request->setLocale($request->getSession()->get('_locale', $this->defaultLocale));
}
}
public static function getSubscribedEvents()
{
return array(
// must be registered before the default Locale listener
KernelEvents::REQUEST => array(array('onKernelRequest', 17)),
);
}
}
的Symfony /应用/配置/ routing.yml中:
dim_mx:
resource: "@DimMxBundle/Resources/config/routing.yml"
prefix: /
dim_mx:
resource: "@DimMxBundle/Resources/config/routing.yml"
prefix: /{_locale}/
requirements:
_locale: en|fr
root:
pattern: /
defaults:
_controller: FrameworkBundle:Redirect:urlRedirect
path: /%locale%/
permanent: true
总而言之,如果是英语用户,我想将用户重定向到www.website.com/en/,如果是法国用户,我想将用户重定向到www.website.com/fr/。目前,所有用户都被重定向到/ en /.
谢谢大家的帮助。
答案 0 :(得分:0)
为解决我的问题,我安装了jmsI18nRoutingBundle Bundle。
http://jmsyst.com/bundles/JMSI18nRoutingBundle
谢谢大家的时间。 最好的问候,迪米特里
答案 1 :(得分:-1)
要使用php重定向某人,您可以使用void header ( string $string [, bool $replace = true [, int $http_response_code ]] )
函数,您只需要知道它们来自何处,然后您可以将它们重定向为使用者,如
header('Location: http://www.website.com/fr/');
了解php.net
的更多信息