Ошибка при использовании Symfony 4.4 & FOSRestBundle "View Response listener" - PullRequest
0 голосов
/ 06 апреля 2020

Я начал учиться Symfony 1 год go, и теперь я пытаюсь закодировать RESTFul API с помощью FosRestBundle

Сначала я начал с


    /**
     * Lists all Movies.
     * @Rest\Get("/movies")
     *
     * @return Response
     */
    public function getMovieListAction()
    {
        $repository = $this->getDoctrine()->getRepository(Movie::class);
        $movies = $repository->findall();
        return $this->handleView($this->view($movies));

        return $view;
    }

    /**
     * show a Movies.
     * @Rest\Get("/movie/{id}")
     *
     * @return Response
     */
    public function getMovieAction(Movie $movie)
    {

        $view = View::create();
        $view->setData($movie);
        return $view;
    }

Эта функция работала хорошо. Поэтому я пытаюсь go глубже с Просмотреть ответ слушателя

И вот тут начинаются проблемы. Я пытаюсь

    /**
     * show a Movie.
     * @Rest\Get("/movie/detail/{id}")
     *
     * @Rest\View()
     */
    public function getMovieDetailAction(Movie $movie)
    {
        return $movie;
    }

И все, что я получаю, это Предупреждение: ReflectionObject :: __ construct () ожидает, что параметром 1 будет объект, нулевое значение

Трассировка исключения стека

ErrorException:
Warning: ReflectionObject::__construct() expects parameter 1 to be object, null given

  at vendor/friendsofsymfony/rest-bundle/EventListener/ViewResponseListener.php:168
  at FOS\RestBundle\EventListener\ViewResponseListener->getDefaultVars(object(View), null, null)
     (vendor/friendsofsymfony/rest-bundle/EventListener/ViewResponseListener.php:107)
  at FOS\RestBundle\EventListener\ViewResponseListener->onKernelView(object(ViewEvent), 'kernel.view', object(TraceableEventDispatcher))
     (vendor/symfony/event-dispatcher/Debug/WrappedListener.php:126)
  at Symfony\Component\EventDispatcher\Debug\WrappedListener->__invoke(object(ViewEvent), 'kernel.view', object(TraceableEventDispatcher))
     (vendor/symfony/event-dispatcher/EventDispatcher.php:264)
  at Symfony\Component\EventDispatcher\EventDispatcher->doDispatch(array(object(WrappedListener)), 'kernel.view', object(ViewEvent))
     (vendor/symfony/event-dispatcher/EventDispatcher.php:239)
  at Symfony\Component\EventDispatcher\EventDispatcher->callListeners(array(object(WrappedListener)), 'kernel.view', object(ViewEvent))
     (vendor/symfony/event-dispatcher/EventDispatcher.php:73)
  at Symfony\Component\EventDispatcher\EventDispatcher->dispatch(object(ViewEvent), 'kernel.view')
     (vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php:168)
  at Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher->dispatch(object(ViewEvent), 'kernel.view')
     (vendor/symfony/http-kernel/HttpKernel.php:163)
  at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
     (vendor/symfony/http-kernel/HttpKernel.php:80)
  at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
     (vendor/symfony/http-kernel/Kernel.php:201)
  at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
     (public/index.php:25)

Я получаю от Google мало результатов и ничего на Symfony 4


  • Symfony 4.4.99
  • FOSRestBundle 2.7
  • JMSSerializerBundle 3.5
# Read the documentation: https://symfony.com/doc/master/bundles/FOSRestBundle/index.html
fos_rest:
  routing_loader:
    default_format: json
    include_format: false
  body_listener: true
  format_listener:
    rules:
      - { path: '^/', priorities: ['json'], fallback_format: json, prefer_extension: false }
  param_fetcher_listener: true
  access_denied_listener:
    json: true
  view:
    view_response_listener: 'force'
    formats:
      json: true

Спасибо за ответы и советы

...