【发布时间】:2014-04-30 23:54:32
【问题描述】:
我不确定这是否是默认行为,但我试图在 Symfony2 应用程序中调用 $form->submit($data) 之前和之后比较来自对象的旧数据。
奇怪的是表单绑定后旧变量也更新了。
考虑这段代码:
public function editAction(Person $person, Request $request)
{
/**
* Get the current old employment
*/
$currentOldEmployment = $person->getCurrentEmployment();
/*
* Create the form
*/
$form = $this->createForm(new PersonType(), $person);
/**
* Submit the form
*/
$form->submit($data);
if($form->isValid()) {
if($currentEmployment) {
$oldCompany = $currentOldEmployment->getCompany();
$newCompany = $person->getCurrentEmployment()->getCompany();
// compare and trigger something if different
...
}
return View::create($oldCompany->getName() . " " . $newCompany->getName(), 400);
}
奇怪的是,这总是会输出两次新公司的名称。 我什至用 $oldPerson = clone $person 尝试过,但这也会显示新公司的名称两次,而不是一次显示旧公司的名称和一次新公司的名称。
【问题讨论】:
-
这是预期行为,因为 currentEmployment 是一个对象。对象本身没有变化,只有它的属性。试试 $currentOldEmployment = clone $person->getCurrentEmployment();制作副本。