Извините, моя ошибка с копированием. Это не работает для истинного и ложного значения.

я проблема с возвратом представлений в FOSRestBundle, работающем под Symfony 4.1 Project.

Это код из моего контроллера:

class NewsController extends FOSRestController
{

    public function getNewsAction()
    {
        $data = ['news1', 'news2'];

        $view = $this->view($data, 200);

        return $this->handleView($view);
     }
}

fos_rest.yaml

fos_rest:
    param_fetcher_listener:  true
    allowed_methods_listener:  true
    routing_loader: true
    view:
        view_response_listener:  'force'
    format_listener:
        rules:
            - { path: ^/api, prefer_extension: true, fallback_format: json, priorities: [ json, html ] }

framework.yaml

framework:
    secret: '%env(APP_SECRET)%'
    php_errors:
        log: true

sensio_framework_extra:
    view:        { annotations: true }

Итак, у меня довольно простая конфигурация, и я все еще получаю такие ошибки:

(1/1) RuntimeException Вы должны включить аннотации представления SensioFrameworkExtraBundle, чтобы использовать ViewResponseListener.

Я попытался удалить "view: view_response_listener: 'force'", но затем у меня появляется эта ошибка:

Экземпляр Symfony \ Bundle \ FrameworkBundle \ Templating \ EngineInterface> должен быть внедрен в FOS \ RestBundle \ View \ ViewHandler для отображения шаблонов.

Я борюсь с этим часами. Это из-за бета-статуса Symfony 4? Или может я что то не так делаю? Может быть, я скучаю по некоторым зависимостям? Я не смог найти ничего полезного об этой проблеме в официальной документации.

 Cerad27 нояб. 2017 г., 15:05
Может быть связано сэто Кстати, 4.1 будет основной версией для разработчиков. 4.0 только на стадии релиза-кандидата.
 Cerad27 нояб. 2017 г., 15:08
И согласнотаблица совместимости пакетов fosrestbundle пока не поддерживает 4.x. Не огромный сюрприз.

Ответы на вопрос(3)

Вы должны включить аннотации представления SensioFrameworkExtraBundle

sensio_framework_extra:
    view:        { annotations: false }
 jankes27 нояб. 2017 г., 14:50
Извините, моя ошибка с копированием. Это не работает для истинного и ложного значения.
Решение Вопроса

Добавить строку вconfig/packages/framework.yaml

framework:
    templating: { engines: ['twig'] }

это решит

Экземпляр Symfony \ Bundle \ FrameworkBundle \ Templating \ EngineInterface> должен быть внедрен в FOS \ RestBundle \ View \ ViewHandler для отображения шаблонов.

 Sebus28 мар. 2018 г., 17:43
Это работает, но я не понимаю, что в своем проекте я уже использую веточку. Почему я должен добавить в универсальный framework-config, когда я хочу использовать его в ViewHandler?

Accept: application/json в вашем запросе?

Если нет, вам не обязательноtwig, но вам нужно удалитьhtml из конфигурации формата в конфигурации пакета:

fos_rest:
    format_listener:
        rules:
            - { path: ^/, prefer_extension: true, fallback_format: json, priorities: [ json ] }

По умолчанию используетсяhtml в приоритетах, и это требуетtwig.

 cezar07 окт. 2018 г., 04:45
Спасибо! Это решило проблему для меня с Symfony 4.1.

Ваш ответ на вопрос