我正在使用 Symfony2,我想为我的网站添加多语言支持。我有捆绑 symfony/symfony。但是,当我按照文档所述设置语言环境变量时。我收到以下错误。我的课看起来像
<?php
// src/AppBundle/EventListener/LocaleListener.php
namespace AppBundle\EventListener;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class LocaleListener implements EventSubscriberInterface
{
private $defaultLocale;
public function __construct($defaultLocale = 'en')
{
$this->defaultLocale = $defaultLocale;
}
public function onKernelRequest(GetResponseEvent $event)
{
$request = $event->getRequest();
if (!$request->hasPreviousSession()) {
return;
}
if ($locale = $request->attributes->get('_locale')) {
$request->getSession()->set('_locale', $locale);
} else {
$request->setLocale($request->getSession()->get('_locale', $this->defaultLocale));
}
}
static public function getSubscribedEvents()
{
return array(
// must be registered before the default Locale listener
KernelEvents::REQUEST => array(array('onKernelRequest', 17)),
);
}
}
和 service.yml
app.locale_listener:
class: AppBundle\EventListener\LocaleListener
arguments: ['%kernel.default_locale%']
tags:
- { name: kernel.event_subscriber }`
如果你们中的任何人对如何解决这个问题有任何建议,我很高兴听到它。
编辑:我现在解决了这个问题,过了一会儿我注意到该类已经存在于供应商文件夹中的其他地方。那门课很有效,看起来和我的一模一样。所以我插入了我的代码并解决了它。