0

我目前有一个包,我从 /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']);
            }
        }
    }
}

你会同意我的看法,这是令人筋疲力尽和痛苦的。我怎样才能让它自动化?我到处搜索,但肯定有一些我错过的东西。但是什么?

4

2 回答 2

1

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

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

然后您可以使用相同的代码将它们放入您的控制器中:

$this->container->getParameter('facebook.page.name');
于 2012-10-06T17:23:12.760 回答
1

好吧,就是这样,除非您想将它们明确设置为配置中的参数。

尽管如果它是一个强制性的树结构,并且您已经通过捆绑包中的配置类对其进行了验证,那么您实际上并不需要过多地摆弄条件和 isset。

这并不是真的很痛苦,也不是很累,远非如此,我很难过。

于 2012-10-07T00:49:38.303 回答