我正在使用friendsofsymfony / rest-bundle“:”1.0.*@dev“bundle,尝试从Symfony 2.2升级到Symfony 2.3。在我的app / config / config.yml文件中,我正在尝试指定fos_rest format_listener的规则:
fos_rest:
view:
formats:
rss: false
xml: true
json: true
templating_formats:
html: true
force_redirects:
html: true
json: true
failed_validation: HTTP_BAD_REQUEST
default_engine: twig
format_listener:
rules:
fallback_format: json
prefer_extension: true
当我执行此操作并运行composer.phar install
时,它会显示
[Symfony\Component\Config\Definition\Exception\InvalidTypeException]
Invalid type for path "fos_rest.format_listener.rules.fallback_format". Expected array, but got string
当我把它改成这样的数组时:
fallback_format:
- json
它说
[Symfony\Component\Config\Definition\Exception\InvalidConfigurationException]
Unrecognized options "0" under "fos_rest.format_listener.rules.fallback_format"
我也尝试在'json'周围加上引号,但它仍然说同样的话。当我尝试将此行添加到format_listener规则时会发生类似的错误:
default_priorities: ['json', 'html', 'txt', */*]
但相反,它说Unrecognized options "0, 1, 2, 3" under "fos_rest.format_listener.rules.default_priorities"
,因为指定了四个值而不只是一个。
似乎这个捆绑包坚持认为它应该得到一个数组,但是当它被赋予一个时,它就无法读取它。
有没有人遇到过这个问题/这是一个错误/是否有解决方法?
答案 0 :(得分:3)
看起来您正在尝试将json设置为请求的默认格式。如果是这种情况,现在做的有点不同了。
fos_rest:
format_listener: true
routing_loader:
default_format: json
编辑:
如果您想强制使用特定格式,请执行以下操作:
format_listener:
rules:
- { path: ^/rest/path, priorities: [html, json, xml], fallback_format: json, prefer_extension: true}
这是一个有用的配置,我发现它正在使用FOSRestBundle。它与我提到的类似。 Example Config