"There are no registered paths for namespace "应用程序“。” FosRestBundle,Symfony,POST/DELETE

"There are no registered paths for namespace "App"." FosRestBundle, Symfony, POST/DELETE

我在对我的 API 执行 post 或删除请求时收到这样一条消息 "There are no registered paths for namespace "App""得到作品。我使用 FosUserBundle.

config.yml

...
fos_rest:
    body_converter:
      enabled: true
      validate: true
      validation_errors_argument: validationErrors
    exception:
      enabled: true
      exception_controller: 'AppBundle\Controller\ExceptionController::showAction'
    param_fetcher_listener: true
    routing_loader:
          default_format: json
          include_format: false
    serializer:
        serialize_null: true
    view:
        view_response_listener: force
...

PersonRestController.php

...
class PersonRestController extends AbstractController {

    use ControllerTrait;

    /**
     * @Rest\View()
     */
    public function getPersonsAction() {
        $data = $this->getDoctrine()
            ->getRepository(Person::class)
            ->findAll();
        return $data;
    }

    /**
     * @Rest\View(statusCode=201)
     * @ParamConverter("person", converter="fos_rest.request_body")
     * @Rest\NoRoute()
     */
    public function postPersonsAction(Person $person, ConstraintViolationListInterface $validationErrors) {
        if (count($validationErrors) > 0) {
            throw new ValidationException($validationErrors);
        }

        $em = $this->getDoctrine()->getManager();
        $em->persist($person);
        $em->flush();

        return $person;
    }

    /**
    * @Rest\View()
    */
    public function deletePersonsAction(?Person $person) {

        if($person === null) {
            return $this->view(null, 404);
        }

        $em = $this->getDoctrine()->getManager();
        $em->remove($person);
        $em->flush();

        return null;
    }

    /**
     * @Rest\View()
     */
    public function getPersonAction(?Person $person) {
        if($person === null) {
            return $this->view(null, 404);
        }

        return $person;
    }
}
...

错误:

我检查了我的 config.yml。它显示没有重复。 尽管出现错误,POST 方法仍然有效,但 DELETE 无效。

您似乎在 use 语句中使用了 App\ 而不是 AppBundle\(另请检查您的配置文件)。

确保在 config.yml 中包含以下行:

templating:
    engines: ['twig']

您还应该扩展 FOSRestController 而不是使用 Trait (FOSRestBundle Step 2: The view layer)

NB :我假设您使用 AppBundle 作为主包,因为您在 config.xmlexception_controller.