"命名空间没有注册路径" App"。" FosRestBundle,Symfony,POST / DELETE

时间:2018-05-07 09:39:43

标签: api symfony twig fosrestbundle

我收到这样的消息"命名空间没有注册路径" App""同时对我的API发布或删除请求。 GET有效。我使用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;
    }
}
...

错误:

error

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

1 个答案:

答案 0 :(得分:0)

好像您在App\语句中使用了AppBundle\而不是use(请查看您的配置文件)。

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

templating:
    engines: ['twig']

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

NB :我假设您使用AppBundle作为主要捆绑包,因为您在 config.xml 中使用了密钥{{1 }}