FOSRestBundle 및 Doctrine Extension에 문제가 있습니다. Doctrine Extension을 구현하는 데 Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle
을 사용합니다.FOSRestBundle "PUT"메서드에서 Doctrine 확장이 작동하지 않습니다.
여기 내 문제 : 일부 교리 확장에 의해 피드 된 일부 필드가있는 "기사"라는 엔터티가 있습니다. 내 경우 Timestampable 및 Blameable.
class Articles {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
* @var integer
*/
private $id;
/**
* @var string
* @ORM\Column(type="text")
*/
private $description;
/**
* @Gedmo\Blameable(on="create")
* @ORM\ManyToOne(targetEntity="\Zanzibar\UsersBundle\Entity\Users")
* @ORM\JoinColumn(name="createdBy", referencedColumnName="id")
*/
protected $createdBy;
/**
* @Gedmo\Blameable(on="update")
* @ORM\ManyToOne(targetEntity="\Zanzibar\UsersBundle\Entity\Users")
* @ORM\JoinColumn(name="lastEditBy", referencedColumnName="id")
*
* @var Users
*/
private $lastEditBy;
/**
* @var datetime $created
*
* @Gedmo\Timestampable(on="create")
* @ORM\Column(type="datetime")
*/
private $created;
/**
* @var datetime $updated
*
* @Gedmo\Timestampable(on="update")
* @ORM\Column(type="datetime")
*/
private $updated;
나는이 컨트롤러 메소드로 REST를 통해 새로운 제품을 만드는 succesfull 해요 :
public function postArticleAction(Request $request)
{
$entity = new Articles();
$form = $this->createForm(new ArticlesType(), $entity);
$form->submit($request);
if ($form->isValid()) {
$entity = $form->getData();
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return $this->redirectView(
$this->generateUrl(
'get_article',
array('id' => $entity->getId())
),
Codes::HTTP_CREATED
);
}
return array(
'form' => $form,
);
} //[POST {"description":"a_description"}] /articles
내가 그것을하지 않고 작업을 수행
{
"description":"test_Article14_",
}
뭔가를 게시 새로운 개체를 만들 때 문제, 나에게 같은 대상을주는 것
{
"id":14,
"description":"test_Article14",
"created_by":{
"id":1,
"username":"test",
"username_canonical":"test",
"email":"[email protected]",
"email_canonical":"[email protected]",
"enabled":true,
},
"last_edit_by":{
"id":1,
"username":"test",
"username_canonical":"test",
"email":"[email protected]",
"email_canonical":"[email protected]",
"enabled":true,
},
"created":"2014-01-14T15:44:43+0100",
"updated":"2014-01-14T15:44:43+0100",
}
,451,515,
하지만이 컨트롤러 방법이 조항을 수정하려고하면
public function putArticlesAction(Request $request, $id)
{
$entity = $this->getEntity($id);
$form = $this->createForm(new ArticlesType(), $entity);
$form->submit($request);
if ($form->isValid()) {
$entity = $form->getData();
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return $this->redirectView(
$this->generateUrl(
'get_article',
array('id' => $entity->getId())
),
Codes::HTTP_CREATED
);
}
return array(
'form' => $form,
);
} //[PUT {"description":"a_description"}] /articles/{id}
는
내 객체가 난 번들 특정 routing.yml 추가 할 것 완성도
{
"id":14,
"description":"test_Article14_",
"created":"-0001-11-30T00:00:00+0100",
"updated":"-0001-11-30T00:00:00+0100",
}
:
articles:
type: rest
resource: Zanzibar\BackendBundle\Controller\ArticlesController
을
및 내 문제를 참조하는 conf :
fos_rest:
param_fetcher_listener: true
body_listener: true
format_listener: true
view:
view_response_listener: 'force'
routing_loader:
default_format: json
stof_doctrine_extensions:
default_locale: en_US
orm:
default:
blameable: true
timestampable: true
어떤 문제가 발생했는지에 대한 아이디어가 있습니까?
안녕 Dipesh 및 도움에 감사드립니다. 불행히도 그것은 이렇게 좋았지 만, 내 테스트를하면서 그것을 바꿨습니다. Anycase가 작동하지 않아 이전 버전으로 되돌아 가지 않습니다. ( 건배, C – rollsappletree