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

标签 php symfony

我想在我的应用程序的主 config.yml 中编写类似的内容:

my_section
  some_value: %local_value%

参数 local_value 将从 parameters_local.yml 文件中获取。但是,我希望这个值是可选的 - 如果应用程序用户没有在他的 parameters_local.yml 中提供 local_value 参数,我希望它被设置为空。

如果我按照上面提供的方式保留 config.yml 并尝试从 parameters_local.yml 中省略 local_value,我收到以下错误消息:

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

有解决办法吗?

最佳答案

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

  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. 您的应用程序/库不应依赖于上述任何解决方案。

关于php - Symfony 的主要 config.yml 中的可选参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29899079/

相关文章:

php - MySQL - 时间戳之间的平均差异,不包括周末和非营业时间

javascript - 在 CodeIgniter 中允许 URL 中的任何字符

php - Windows机器上的Hadoop Hello world

symfony - 如何将 KnpPaginator 手动计数移动到 Repository 类?

php - Symfony SwiftMailer - 预期响应代码 220 但得到代码 "",消息 ""

symfony - 不能在不选择至少一个根实体别名的情况下通过标识变量选择实体

php - 使用 MySQL、PHP 的未定义索引

php - 连接 APNS 服务器时出错 - SSL 操作失败,代码为 1。OpenSSL 错误消息 : error:14090086:SSL

php - Symfony 和 Azure 分发包 - Azure 中的 Assets

php - Symfony2 Doctrine - 删除或隐藏关系以保持一致性?