根据另一个或环境的(值)设置Symfony 2配置选项?

时间:2012-09-24 11:28:11

标签: symfony symfony-2.1

如果环境是“测试”,如何将“disable_delivery”设置为默认值true?这甚至可能吗?

另一个问题是我如何根据另一个配置选项(如“用户名”)设置它?

$rootNode
    ->children()
        ->scalarNode('method')
            ->isRequired()
            ->cannotBeEmpty()
            ->validate()
                ->ifNotInArray($methods)
                ->thenInvalid('The method %s is not supported.')
            ->end()
        ->end()
        ->scalarNode('username')->isRequired()->cannotBeEmpty()->end()
        ->scalarNode('password')->isRequired()->cannotBeEmpty()->end()
        ->booleanNode('disable_delivery')->end()
    ->end()
;

1 个答案:

答案 0 :(得分:1)

更好的方法是在config_test.yml configuraiton文件中设置此变量。

如果您仍想使用默认值:将容器实例传递给Configuration类并使用:

->booleanNode('disable_delivery')->defaultValue('test' === $this->container->get(‘http_kernel’)->getEnvironment() ? true : false)->end()

但这似乎不太好主意。

与第二个问题相同:在配置文件中使用param。对于您的捆绑包的最终用户来说,这将更加简单和清晰(您将在两到三个月内完成)。