Symfony主config.yml中的可选参数值

时间:2015-04-27 14:52:55

标签: php symfony

我想在我的应用程序主config.yml中写出类似的东西:

my_section
  some_value: %local_value%

将从local_value文件中获取参数parameters_local.yml。但是,我希望此值是可选的 - 如果应用程序用户未在其local_value中提供parameters_local.yml参数,我希望将其设置为null。

如果我按照上面提供的config.yml方式离开,并尝试忽略local_value中的parameters_local.yml,则会收到以下错误消息:

[Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException]  
You have requested a non-existent parameter "local_value".

有解决方法吗?

1 个答案:

答案 0 :(得分:3)

根本不使用参数。由开发人员决定他或她想要定义什么作为参数,什么不是。

  1. 在您的配置中,将此值定义为可选:

    $treeBuilder->root('my_section')
        ->children()
            ->scalarNode('some_value')->defaultValue('XYZ')->end()
        ->end()
    ;
    
  2. 让用户决定最合适的内容:

    # config.yml
    my_section: ~
    
    ---
    
    # config.yml
    my_section:
        some_value: ABC
    
    ---
    
    # parameters.yml
    my_section_some_value: 123
    
    # config.yml
    my_section:
        some_value: %my_section_some_value%
    
    ---
    
    # config.yml:
    parameters:
        my_section_some_value: 321
    
    my_section:
        some_value: %my_section_some_value%
    
  3. 您的应用程序/库不应该依赖上述任何解决方案。