Symfony:如何访问控制器中的配置

时间:2016-08-10 17:11:57

标签: symfony configuration controller

这可能是一个愚蠢的问题,但我无法看到如何访问这些数据:

在主app / config / config.yml中,我有我的应用程序的常规配置数据。

parameters:    #accessible by getParameter()
    locale: fr
    # ...
fos_user:    #accessible by ???
    #...
    registration:
        form:
            from_email:
                address:     mymail@mydomain.fr
                sender_name: TheSenderName

在我的自定义捆绑包中,我可以使用以下命令访问该config.yml文件中的参数:

$this->container->getParameter('locale'); //gives me "fr" as expected

但是如何访问非参数配置值?

我想在这里获取te FOS用户包配置中定义的地址: 我无法做到

$admin_adress = $this->container->getParameter('fos_user.registration.confirmation.from_email.address');

访问thoses的正确方法是什么?

编辑: 是的我想从FOS用户包(在这个示例中,但可能是任何),控制器内或我的包中的任何内容中访问此配置数据。

3 个答案:

答案 0 :(得分:2)

我认为this question钉了它

class MyProjectExtension extends Extension
{
    public function load( array $configs, ContainerBuilder $container )
    {
        // The next 2 lines are pretty common to all Extension templates.
        $configuration = new Configuration();
        $processedConfig = $this->processConfiguration( $configuration, $configs );

        // This is the KEY TO YOUR ANSWER
        $container->setParameter( 'from_email.address', $processedConfig[ 'registration.confirmation.from_email.address' ];

        // Other stuff like loading services.yml
    }

答案 1 :(得分:0)

其中一个解决方案可以将您的控制器作为服务传递,然后注入您的参数:

# services.yml
my.amazing.controller:
    class: CompanyFirst\LabBundle\Controller\PloufController
    arguments:
        - '@filesystem'
        - '%dump_file_convention%' // your config parameter

答案 2 :(得分:0)

你可以那样行事

parameters:
    locale: fr
    fos_user:
        registration:
            form:
                from_email:
                    address: mymail@mydomain.fr
    # ...
fos_user:
    #...
    registration:
        form:
            from_email:
                address:     %fos_user.registration.form.from_email.address%
                sender_name: TheSenderName

当然我选择这个名称只是为了满足你对参数的控制器请求:你可以(也许应该)选择其他键。

但是使用container->getParameter,您只能访问配置文件的 parameters部分(以及从供应商公开的参数)