2015-11-22 4 views
3

Я разрабатываю приложение, используя Symfony2 с fos-restbundle. Я хотел бы создать некоторые маршруты API, а также некоторые регулярные маршруты (ровно один для front-end AngularJS). Это моя конфигурация fos_rest (и несколько конфигураций линий от Sensio):Symfony2 + FOS Rest Bundle - Обычный маршрут

sensio_framework_extra: view: { annotations: false } router: { annotations: true } request: { converters: true } fos_rest: routing_loader: default_format: json include_format: true param_fetcher_listener: force body_listener: true allowed_methods_listener: true view: view_response_listener: 'force' formats: json: true xml: true format_listener: rules: - { path: '^/api', priorities: ['json', 'xml'], fallback_format: json, prefer_extension: true } access_denied_listener: json: true

Как вы можете видеть, у меня есть view_response_listener включен и просмотр аннотаций отключены. Я не могу найти способ определить «регулярный» (не REST) ​​маршрут (и просмотр) для действия индекса (для AngularJS). Продолжайте получать сообщение об ошибке:

ERROR - Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotAcceptableHttpException: "No matching accepted Response format could be determined" at C:\wamp\www\CRMProject\vendor\friendsofsymfony\rest-bundle\EventListener\FormatListener.php line 69 

Я был бы признателен за любую помощь в этом.

ответ

8

Вы можете добавить дополнительные правила для страницы индекса (например):

format_listener: 
    rules: 
     - { path: '^/api', priorities: ['json', 'xml'], fallback_format: json, prefer_extension: true } 
     - { path: '^/', priorities: [ 'text/html', '*/*'], fallback_format: html, prefer_extension: true } 

чтения документации о формате слушателе: http://symfony.com/doc/current/bundles/FOSRestBundle/format_listener.html

+0

Рабочая ! Большое спасибо! – probertgajda

+0

У меня есть еще одна проблема, связанная с предыдущей. Существует много таких ошибок: «NetworkError: 406 Not Acceptable - http: //crmproject.localhost/bundles/app/css/crm.css». Я не могу загрузить JS/CSS. По той же причине, что и в главном вопросе, но такое же решение не помогает. – probertgajda

+0

См. Мой отредактированный ответ, я также сослался на документы. –

2

Как было предложено в official docs вы также можете отключить формат перехватчик для "нормальная" часть сайта (не API):

Often when integrating this Bundle with existing applications, it might be useful to disable the format listener for some routes. In this case it is possible to define a rule that will stop the format listener from determining a format by setting stop to true as a rule option. Any rule containing this setting and any rule following will not be considered and the Request format will remain unchanged.

# app/config/config.yml 
fos_rest: 
    format_listener: 
     enabled: true 
     rules: 
      - { path: '^/api', priorities: ['json', 'xml'], fallback_format: json, prefer_extension: false } 
      - { path: '^/', stop: true } # Available for version >= 1.5