FOS Rest Bundle - Контроллер должен вернуть объект Response, но он возвращает View - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь настроить FOS Rest Bundle на symfony 4.2.3.и я следую этому уроку:

https://www.thinktocode.com/2018/03/26/symfony-4-rest-api-part-1-fosrestbundle/

Установил и настроил пакет:

//annotations.yaml
rest_controller:
    resource: ../../src/Controller/Rest/
    type: annotation
    prefix: /api

//fos_rest.yaml
fos_rest:
  view:
    view_response_listener:  true
  format_listener:
    rules:
      - { path: ^/api, prefer_extension: true, fallback_format: json, priorities: [ json ] }

и когда я вызываю postAction () моего объекта ArticleController,который выглядит так:

class ArticleController extends FOSRestController
{
/**
 * Creates an Article resource
 * @Rest\Post("/articles")
 * @param Request $request
 * @return View
 */
public function postArticle(Request $request): View
{
    $entityManager = $this->getDoctrine()->getManager();

    $article = new Article();

    $article->setTitle($request->get('title'));
    $article->setContent($request->get('content'));


    $articleCategory = $entityManager->getReference(ArticleCategory::class, $request->get('article_category'));
    $article->setArticleCategory($articleCategory);

    $article->setPublished($request->get('published'));

    $entityManager->persist($article);
    $entityManager->flush();

    // In case our POST was a success we need to return a 201 HTTP CREATED response
    return View::create($article, Response::HTTP_CREATED);
}

}

Я получаю сообщение об ошибке (тестирование с почтальоном): Контроллер должен вернуть объект "Symfony \ Component \ HttpFoundation \ Response", ноон возвратил объект типа FOS \ RestBundle \ View \ View.

Почему это ?!Определено, что метод postArticle () должен возвращать объект View, и я делаю это.

Одно замечание: мой класс расширяет класс FOSRestController, который устарел.Я также попытался расширить AbstractFOSRestController, но с тем же результатом.

1 Ответ

0 голосов
/ 13 февраля 2019

Итак, по какой-то причине мой файл fos_rest.yaml был не в каталоге dir, где он будет глобальным, а в тестовом подкаталоге пакетов.Когда я переместил его туда, где он принадлежит, это начало работать.

...