【问题标题】:Symfony 2: get (default_locale) parameter from config.ymlSymfony 2:从 config.yml 获取(default_locale)参数
【发布时间】:2013-11-23 10:36:44
【问题描述】:

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

框架: default_locale: nl

我想在 EventListener 中获取这个值。有人可以帮忙吗?

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

服务: core_locale.locale_listener: 类: 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`

【问题讨论】:

    标签: symfony locale config event-listener


    【解决方案1】:

    我不明白你的问题是什么。要使用事件监听器,您需要在服务文件中注册服务。在那里你可以像上面写的那样将参数传递给构造函数:

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

    这应该可行。 或者你的问题是什么,什么在那里不起作用?

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      请阅读文档章节Introduction to Parameters

      【讨论】:

      • 但是不能在控制器外访问服务容器
      • 这是不正确的——你可以使用依赖注入来访问容器。您需要为您的类创建一个服务定义并将其注入其中。此外,您可以只将所需的参数注入到新创建的服务中。
      • 如果您提供有关该类的更多详细信息以及您要使用该参数的目的,我可以添加有关如何实现您的目标的更多信息。
      • 喜欢这个?服务:core_locale.locale_listener:类:Eye\CoreBundle\EventListener\LocaleListenerDefault 参数:["%kernel.default_locale%"] private $defaultLocale;公共函数 __construct($default_locale = 'en') { $this->defaultLocale = $default_locale;我不使用使用 Symfony\Component\DependencyInjection\ContainerBuilder;使用 Symfony\Component\DependencyInjection\Reference;在这里.. 抱歉标记.. Stackoverflow 不允许做出“干净”的回复?
      猜你喜欢
      • 1970-01-01
      • 2012-04-04
      • 1970-01-01
      • 2016-03-22
      • 1970-01-01
      • 1970-01-01
      • 2016-08-22
      • 2013-10-21
      相关资源
      最近更新 更多