Symfony无法覆盖捆绑包上的参数

时间:2012-10-06 16:52:05

标签: php symfony

我目前有一个捆绑包,我从/app/config/config.yml文件中定义了它的参数

foo:
   facebook:
       page: 
           name: %facebook_page_name%

然后我在我的控制器中通过以下方式访问它:

$this->container->getParameter('facebook.page.name');

我目前所做的工作是在FooExtension中

public function load(array $configs, ContainerBuilder $container)
{
    $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
    $loader->load('config.yml');
    $loader->load('services.yml');

    $configuration = new Configuration();
    $config = $this->processConfiguration($configuration, $configs);

    if (isset($config['facebook'])) {
        if (isset($config['facebook']['page'])) {
            if (isset($config['facebook']['page']['name'])) {
                $container->setParameter('facebook.page.name', $config['facebook']['page']['name']);
            }
        }
    }
}

你会同意我的看法,这令人筋疲力尽。我该如何自动完成?我到处搜索,但绝对是我遗漏的东西。但什么?

2 个答案:

答案 0 :(得分:1)

如果你只需要传递一些参数,没有什么比提供默认值,参数数组或检查配置更合适,你可以设置一些这样的参数:

# app/config/config.yml
parameters:
    facebook.page.name:    %facebook_page_name%

然后你可以使用相同的代码在控制器中获取它们:

$this->container->getParameter('facebook.page.name');

答案 1 :(得分:1)

嗯,就是这样,除非你想在配置中明确地将它们设置为参数。

虽然如果它是一个必需的树结构,并且你已经通过bundle中的配置类验证它,你实际上并不需要用条件和issets来调整它。

这不是真的很痛苦,也不辛苦,远非如此,我很伤心不同。