私は検索しましたが、同じ問題について多くの質問がありますが、どれも私の問題を解決しません。
私はエンティティを持っています、これがコードです:
/*
* @ORM\HasLifecycleCallbacks
*/
class MyEntity
{
// some preoperties here...
/**
* @ORM\Column(type="text", nullable=true)
* @Assert\MaxLength(limit="500")
*/
private $delivery = null;
/**
* @var $deliveryOn bool
*
* Virtual field used for $delivery property organization
*/
private $deliveryOn = false;
/**
* @ORM\PrePersist()
* @ORM\PreUpdate()
*/
public function preSetDelivery()
{
if ($this->deliveryOn == false)
$this->delivery = null;
}
/**
* @ORM\PostLoad()
*/
public function loadDeliveryOn()
{
if ($this->delivery != null)
$this->deliveryOn = true;
}
}
loadDeliveryOn
メソッドは常に完全に機能します。しかし、preSetDelivery
エンティティをデータベースに初めて永続化したときにのみ発生します。オブジェクトが更新されたときにも呼び出されるようにしたいのですが、機能しません。そして、その理由はわかりません。
私の編集コントローラー:
public function editAction($id)
{
// some code here...
// ...
$request = $this->getRequest();
if ($request->isMethod('POST'))
{
$form->bind($request);
if ($form->isValid())
{
$em->flush();
}
}
}