我在parameters.ini
文件中定义布尔参数时遇到问题。这是定义:
aParameter = true
然后,在config.yml
我做:
aParameter: %aParameter%
但是我收到了这个错误:
InvalidTypeException:路径“myService.aParameter”的类型无效。预期的布尔值,但得到了字符串。
将%aParameter%
替换为true
时,此错误消失。我做错了什么?
答案 0 :(得分:3)
YAML格式的默认Symfony2导入参数,因此第一行之一应为:
imports:
- { resource: parameters.yml }
在parameters.yml中使用:
aParameter: true
我不使用INI文件,所以我不知道它是如何工作的。
答案 1 :(得分:3)
Symfony 2使用parse_ini_file()函数,似乎没有为布尔值返回正确的类型。
<?php
file_put_contents('test.ini', "test1=on\ntest2=true\ntest3=1");
var_dump(parse_ini_file('test.ini'));
将输出
array(3) {
'test1' => string(1) "1"
'test2' => string(1) "1"
'test3' => string(1) "1"
}
您可能希望以ini
为例,实现自己的Symfony\Component\DependencyInjection\Loader\IniFileLoader
解析器。
支持布尔值的词法分析器的示例可以在php doc for parse_ini_file()的评论中找到
另一种方法是使用yaml格式作为配置文件。
答案 2 :(得分:2)
看起来没有办法实现它。见this issue。最简单的方法是用parameters.yml
替换你的parameters.ini例如,来自symfony-standard
的parameters.yml.dist答案 3 :(得分:0)
在Symfony 3.4中,您可以“投射”它们。参见https://symfony.com/blog/new-in-symfony-3-4-advanced-environment-variables
parameters:
# roughly equivalent to "(bool) getenv('BOOL_PARAM')"
app.enable_something: '%env(bool:BOOL_PARAM)%'
bool:, int:, float: and string: