Symfony 3+: Как я могу научиться использовать FOSRestBundle? - PullRequest
0 голосов
/ 15 декабря 2018

Я пытаюсь создать REST API с помощью Symfony 3.4, но я обнаружил некоторые трудности в изучении того, как использовать этот пакет.

Поэтому, когда я пытаюсь просмотреть некоторые учебные пособия, я получаю ошибки из-заСмена версии пакета, поэтому я обнаружил, что сам пробую любую конфигурацию, копирую и вставляю, пока она не работает, я чувствую себя очень уродливо.

Я пытался получить фильмы в JSON

При первой проблеме я былполучаю эту ошибку:

There are no registered paths for namespace App
Twig_Error_Loader

Я исправляю это, добавляя это в config.yaml

fos_rest:
    view:
        view_response_listener: force

Но через некоторое время и без внесения каких-либо изменений появляется новая ошибка:

An instance of Symfony\Bundle\FrameworkBundle\Templating\EngineInterface must be injected in FOS\RestBundle\View\ViewHandler to render templates.

MoviesController.php:

<?php

namespace AppBundle\Controller;

use FOS\RestBundle\Controller\ControllerTrait;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
// use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use FOS\RestBundle\Controller\Annotations as Rest;
use AppBundle\Entity\Movie;

class MoviesController extends AbstractController
{
  use ControllerTrait;

  /**
   * @Rest\View(populateDefaultVars=false)
   */
  public function getMoviesAction(){
    $movies = $this->getDoctrine()
        ->getRepository(Movie::class)
        ->findAll();

        // print_r($movies); die;
    return $movies;
  }

}

и когда мы видим документ, я спрашиваю, как я могу понять эти строки:

https://symfony.com/doc/master/bundles/FOSRestBundle/configuration-reference.html

ИтакМой вопрос сегодня - это основной вопрос: как научиться использовать определенный пакет в Symfony и работать как профессионал?это проблема концептуальных комплектов из-за его плохой документации или от меня?

1 Ответ

0 голосов
/ 17 декабря 2018

Начиная с Symfony 4 (включите Symfony 3.4, потому что это одно и то же), вы должны использовать платформу API вместо FOSRestBundle

composer require api

Менее чем за две минуты ваш API готов.Просто добавьте

use ApiPlatform\Core\Annotation\ApiResource; к вашим потребностям и

@ORM\Entity к вашим аннотациям и Goo !!!

Дополнительная информация:

...