Я следовал этому уроку http://welcometothebundle.com/symfony2-rest-api-the-best-way-part-3/ а потом я добавил новую сущность, Автор.
С помощью GET, POST и DELETE все идет как положено, но при использовании PUT или PATCH я получаю в результате:
[{"message":"An exception occurred while executing 'INSERT INTO Author
(id, name, password) VALUES (?, ?, ?)' with params [16, null, null]:
\n\nSQLSTATE[23502]: Not null violation: (...)
Это заголовок, который я получаю:
Allow →GET, PUT, PATCH, DELETE
Cache-Control →no-cache
Connection →keep-alive
Content-Type →application/json
Date →Tue, 28 Oct 2014 14:30:10 GMT
Server →nginx/1.1.19
Transfer-Encoding →chunked
X-Debug-Token →6d899c
X-Debug-Token-Link →/api/_profiler/6d899c
X-Powered-By →PHP/5.4.33-2+deb.sury.org~precise+1
Это мой код PHP
public function putAuthorAction(Request $request, $id)
{
try {
if (!($author = $this->container->get('acme_blog.author.handler')->get($id))) {
$statusCode = Codes::HTTP_CREATED;
$author = $this->container->get('acme_blog.author.handler')->post(
$request->request->all()
);
} else {
$statusCode = Codes::HTTP_NO_CONTENT;
$author = $this->container->get('acme_blog.author.handler')->put(
$author,
$request->request->all()
);
}
$routeOptions = array(
'id' => $author->getId(),
'_format' => $request->get('_format'),
);
return $this->routeRedirectView('get_author', $routeOptions, $statusCode);
} catch (InvalidFormException $exception) {
return $exception->getForm();
}
}
И тогда я вставил
return $request->request->all();
перед тем, как попробовать блок внутри putAuthorAction, и я получаю пустой массив в качестве ответа …
У кого-нибудь была похожая проблема?
Я уже пытался сделать это FosRestBundle post / put [создать новую / обновить сущность] неправильно читает запрос но не имеют успеха ..
Я использую расширение Postman в Chromium для тестирования …
(И извините за мой английский, это не мой основной язык)
Задача ещё не решена.
Других решений пока нет …