Symfony2 FOSRestBundle:需要一个数组但无法在config.yml中解析它

时间:2013-11-19 20:30:48

标签: php symfony yaml fosrestbundle

我正在使用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",因为指定了四个值而不只是一个。

似乎这个捆绑包坚持认为它应该得到一个数组,但是当它被赋予一个时,它就无法读取它。

有没有人遇到过这个问题/这是一个错误/是否有解决方法?

1 个答案:

答案 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