php – Symfony配置默认值
发布时间:2020-12-13 16:59:31 所属栏目:PHP教程 来源:网络整理
导读:我相信我的配置是正确的,但我想要我的redis端口和方案配置选项的默认值,但它们是以空值形式出现的? 任何人都可以看到问题是什么? 这是我的配置. /** * {@inheritdoc} */public function getConfigTreeBuilder(){ $treeBuilder = new TreeBuilder(); $rootN
我相信我的配置是正确的,但我想要我的redis端口和方案配置选项的默认值,但它们是以空值形式出现的?
任何人都可以看到问题是什么? 这是我的配置. /** * {@inheritdoc} */ public function getConfigTreeBuilder() { $treeBuilder = new TreeBuilder(); $rootNode = $treeBuilder->root('company_name'); $rootNode ->children() ->arrayNode('cache') ->children() ->arrayNode('redis') ->addDefaultsIfNotSet() ->treatNullLike([ 'scheme' => 'tcp','port' => 6379,]) ->children() ->scalarNode('scheme') ->defaultValue('tcp') ->end() ->scalarNode('host') ->isRequired() ->cannotBeEmpty() ->end() ->integerNode('port') ->defaultValue(6379) ->end() ->end() ->end() ->end() ->end() ->end(); return $treeBuilder; } 这是我的parameters.yml文件 parameters: company_name: cache: redis: host: dev-sessionstore.companyname.com schema: ~ port: ~ 控制台输出: $php bin/console config:dump-reference CompanyNameCacheBundle # Default configuration for "CompanyNameCacheBundle" company_name: cache: redis: namespace: apps scheme: tcp host: ~ # Required port: 6379 apcu: namespace: phpcache 我希望方案和端口使用默认值,但是什么导致它们为空? 解决方法
我知道这是一个老问题,但我在谷歌搜索一个不同的问题时偶然发现它,并发现它没有得到答复.
问题是您只是指定应该如何处理整个redis数组的null,而不是方案和端口值.您指定了它们的默认值,但由于您将这些单独的键设置为null,因此您需要指定应为每个键处理null的方式: /** * {@inheritdoc} */ public function getConfigTreeBuilder() { // Using an array so the values only need to be changed in one place $redisDefaults = [ 'scheme' => 'tcp',]; $treeBuilder = new TreeBuilder(); $rootNode = $treeBuilder->root('company_name'); $rootNode ->children() ->arrayNode('cache') ->children() ->arrayNode('redis') ->addDefaultsIfNotSet() ->treatNullLike($redisDefaults) ->children() ->scalarNode('scheme') ->defaultValue($redisDefaults['scheme']) ->treatNullLike($redisDefaults['scheme']) // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->end() ->scalarNode('host') ->isRequired() ->cannotBeEmpty() ->end() ->integerNode('port') ->defaultValue($redisDefaults['port']) ->treatNullLike($redisDefaults['port']) // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->end() ->end() ->end() ->end() ->end() ->end(); return $treeBuilder; } 您的参数文件中还有一个拼写错误,它应该是scheme,而不是schema (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |