我相信我的配置是正确的,但我想要我的 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,而不是 scheme 和 port 值。您指定了它们的默认值,但是因为您将这些单独的键设置为 null,所以您需要指定如何为每个键处理 null:
/**
* {@inheritdoc}
*/
public function getConfigTreeBuilder()
{
// Using an array so the values only need to be changed in one place
$redisDefaults = [
'scheme' => 'tcp',
'port' => 6379,
];
$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
关于php - Symfony 配置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35268403/
这是在Ruby中设置默认值的常用方法:classQuietByDefaultdefinitialize(opts={})@verbose=opts[:verbose]endend这是一个容易落入的陷阱:classVerboseNoMatterWhatdefinitialize(opts={})@verbose=opts[:verbose]||trueendend正确的做法是:classVerboseByDefaultdefinitialize(opts={})@verbose=opts.include?(:verbose)?opts[:verbose]:trueendend编写Verb
我有一个在Linux服务器上运行的ruby脚本。它不使用rails或任何东西。它基本上是一个命令行ruby脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
两者都可以defsetup(options={})options.reverse_merge:size=>25,:velocity=>10end和defsetup(options={}){:size=>25,:velocity=>10}.merge(options)end在方法的参数中分配默认值。问题是:哪个更好?您更愿意使用哪一个?在性能、代码可读性或其他方面有什么不同吗?编辑:我无意中添加了bang(!)...并不是要询问nobang方法与bang方法之间的区别 最佳答案 我倾向于使用reverse_merge方法:option
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配
1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模
路由有如下代码:resources:orders,only:[:create],defaults:{format:'json'}resources:users,only:[:create,:update],defaults:{format:'json'}resources:delivery_types,only:[:index],defaults:{format:'json'}resources:time_corrections,only:[:index],defaults:{format:'json'}是否可以使用1个字符串为所有资源设置默认格式,每行不带“默认值”散列?谢谢。
我是ruby的新手,正在配置IRB。我喜欢pretty-print(需要'pp'),但总是输入pp来漂亮地打印它似乎很麻烦。我想做的是默认情况下让它漂亮地打印出来,所以如果我有一个var,比如说,'myvar',然后键入myvar,它会自动调用pretty_inspect而不是常规检查。我从哪里开始?理想情况下,我将能够向我的.irbrc文件添加一个自动调用的方法。有什么想法吗?谢谢! 最佳答案 irb中默认pretty-print对象正是hirb被迫去做。Theseposts解释hirb如何将几乎所有内容转换为ascii表。虽