我已经搜索过,有很多相同的问题,但没有一个能解决我的问题。
我有一个实体,这是它的代码:
/*
* @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();
}
}
}