假设我有一个实体。
由于域逻辑,该实体有两个字段,只能通过一个函数更改
我怎样才能使表单框架使用一种方法调用来设置值。
我所读到的data transformers
,让我觉得它不能用于这个提议。
接下来是form events
,这是可用的事件
PRE_BIND
BIND
POST_BIND
PRE_SET_DATA
POST_SET_DATA
BIND_CLIENT_DATA
BIND_NORM_DATA
SET_DATA
但有关这方面的文档非常稀缺。
这是一个示例实体
<?php
namespace X3\TestBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Test
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="X3\TestBundle\Entity\TestRepository")
*/
class Test
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @var string
*
* @ORM\Column(name="firstValue", type="string", length=255)
*/
private $firstValue;
/**
* @var string
*
* @ORM\Column(name="secondValue", type="string", length=255)
*/
private $secondValue;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set name
*
* @param string $name
* @return Test
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set firstValue
*
* @param string $firstValue
* @return Test
*/
protected function setFirstValue($firstValue)
{
$this->firstValue = $firstValue;
return $this;
}
/**
* Get firstValue
*
* @return string
*/
public function getFirstValue()
{
return $this->firstValue;
}
/**
* Set secondValue
*
* @param string $secondValue
* @return Test
*/
protected function setSecondValue($secondValue)
{
$this->secondValue = $secondValue;
return $this;
}
/**
* Get secondValue
*
* @return string
*/
public function getSecondValue()
{
return $this->secondValue;
}
//
// The objective here is that the form use this function
// to set the two values in one call
//
protected function setValues($firstValue, $secondValue)
{
$this->firstValue = $firstValue;
$this->secondValue = $secondValue;
return $this;
}
}
请注意setFirstValue($firstValue)
and setSecondValue($secondValue)
are protected
,应该使用方法设置值setValues($firstValue, $secondValue)
有没有我可以使用的事件来检索firstValue
andsecondValue
并使用它来设置它setValues($firstValue, $secondValue)
并避免form component
抱怨Method "setFirstValue()" is not public in class...
?
一些代码或链接,将是一个奖励。