Symfony 2:从config.yml获取(default_locale)参数

时间:2013-11-23 10:36:45

标签: symfony locale config event-listener

好的,我不想做一些非常简单的事情,我只想从app / config / config.yml获取此值

框架:   default_locale:nl

我想在EventListener中获取此值。任何人都可以帮忙吗?

编辑1 :(这是对的)?但我不在这里使用DependencyInjection类..我很困惑..

服务:     core_locale.locale_listener:         class:Eyee \ CoreBundle \ EventListener \ LocaleListenerDefault         参数:[“%kernel.default_locale%”]

<?php

namespace Eyee\CoreBundle\EventListener;

use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;


/**
* use this class if no database Languages available..
*/
class LocaleListenerDefault implements EventSubscriberInterface
{
    private $defaultLocale;

    public function __construct($default_locale = 'en')
    {    
        $this->defaultLocale = $default_locale;
    }`enter code here`

2 个答案:

答案 0 :(得分:2)

我没有得到你的问题。要使用eventlistener,您需要在服务文件中注册该服务。在那里你可以像上面所写的那样将参数传递给构造函数:

services: 
    core_locale.locale_listener: 
    class: Eyee\CoreBundle\EventListener\LocaleListenerDefault 
    arguments: ["%kernel.default_locale%"]

这应该有效。 或者你的问题是什么,什么不在那里工作?

答案 1 :(得分:1)

这取决于您是否可以访问班级中的容器。

在控制器中,你可以这样做:

$locale = $this->container->getParameter('framework.default_locale');

stackoverflow上有很多答案已经回答了这个问题。

对于非控制器类,您需要使用依赖注入。

请阅读文档章节Introduction to Parameters