Symfony 3+: как я могу научиться использовать FOSRestBundle?

Я пытаюсь создать 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 и работать как профессионал? проблема с концептуальными пакетами связана с его плохой документацией или со мной?


person Med Karim Garali    schedule 14.12.2018    source источник
comment
документация плохая, но вам нужно очистить кэши после редактирования конфигурации и все, наверное :) Также вы можете найти некоторые кикстарты в Интернете, проверьте, например, эту конфигурацию fos_rest sonata-project.org/bundles/media/3-x/doc/reference/api.html (только часть fos_rest)   -  person john Smith    schedule 15.12.2018


Ответы (1)


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

composer require api

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

use ApiPlatform\Core\Annotation\ApiResource; для вашего использования и

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

Больше информации:

person balzacLeGeek    schedule 17.12.2018