保存後に再度表示されるフォームがあります。このフォーム内には座標用のフィールドがあり、(ユーザーが手動で編集しない場合)preUpdate
ライフサイクル コールバックを使用して自動的に更新されます。
/**
* @ORM\preUpdate
*/
public function setUpdatedValue() {
if (!$this->getSomeTrueFalseValue()) {
$this->setCoordinates();
}
}
これはかなりうまくいきます。1 つの例外を除いて。エンティティが正しく保存され、フォームが再度表示された後、 preUpdate メソッドが呼び出される前にフォームがバインドされているため、この特定のフィールドの値は更新されません。この値を強制的に更新するにはどうすればよいですか?
これがaction
現在の外観です。
$em = $this->getDoctrine()->getEntityManager();
$request = Request::createFromGlobals();
$object = $this->getDoctrine()->getRepository($this->repository)->find($id);
if (!$object) return $this->forward('MyBundle:Controller:nonExistent');
$form = $this->createForm( Factory::create_instance($this->type), $object);
if ('POST' == $request->getMethod()) {
$form->bindRequest($request);
if ($form->isValid()) {
$em->persist($object);
$em->flush();
$this->get('session')->setFlash( 'message', 'Saved');
$this->get('session')->setFlash( 'type', 'ok' );
}
}