我收到这样的消息"命名空间没有注册路径" 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;
}
}
...
错误:
我已经检查了我的config.yml。它显示没有重复。 尽管出现错误,POST方法仍然有效,但DELETE并没有。
答案 0 :(得分:0)
好像您在App\
语句中使用了AppBundle\
而不是use
(请查看您的配置文件)。
确保在 config.yml 中包含以下行:
templating:
engines: ['twig']
您还应该扩展FOSRestController
而不是使用特征(FOSRestBundle Step 2: The view layer)
NB :我假设您使用AppBundle
作为主要捆绑包,因为您在 config.xml 中使用了密钥{{1 }}