Symfony2 FOSRestBundle: требует массив, но не может разобрать его в config.yml

Я использую пакет 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", так как указано четыре значения вместо одного.

Кажется, этот пакет настаивает на том, что он должен получить массив, но затем, когда он получает его, он не может его прочитать.

Кто-нибудь сталкивался с этой проблемой/это ошибка/есть ли решение для этого?


person A. Duff    schedule 19.11.2013    source источник


Ответы (1)


Похоже, вы пытаетесь установить 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. У него есть примеры, похожие на то, что я упомянул. Пример конфигурации

person Sehael    schedule 19.11.2013
comment
Спасибо. А как насчет строк default_priorities и Prefer_extension? Кроме того, это где-то задокументировано? Я использовал полную конфигурацию по умолчанию, когда собрать эту конфигурацию вместе. - person A. Duff; 20.11.2013
comment
см. мою правку. На github есть несколько примеров от других провайдеров, но я пока не нашел по этому поводу надежных документов. - person Sehael; 20.11.2013
comment
Хорошо, вот официальный пример конфигурации: github.com/ FriendsOfSymfony/FOSRestBundle/blob/master/Resources/ Это устаревшее дерьмо? - person thorinkor; 31.01.2014