0

我正在使用 friendsofsymfony/rest-bundle": "1.0.*@dev" 捆绑包,尝试从 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"因为指定了四个值,而不仅仅是一个。

似乎这个包坚持它应该得到一个数组,但是当它被给定一个时,它就无法读取它。

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

4

1 回答 1

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 的有用配置。它有与我提到的类似的例子。 示例配置

于 2013-11-19T21:15:05.080 回答