1
我正在編寫一個REST API,我的問題是當我想在一個與其他實體有一對多關係的實體中反序列化請求時,因爲當我想要持久化對象,而不是將現有的「孩子」放在一起,教義創建一個新的,並將他分配給對象。Synfony自定義驗證器在驗證中改變對象值
下面是一個職位例如:
{ 「類別」:{ 「ID」:1},{ 「主題」:{ 「ID」:1}}
我預計會發生,是添加一個新類別:1和主題:1,但相反主義創建一個新的類別/主題。
我想要做的就是改變通過自定義驗證內的學說對象與JMS串行解串創建的類/主題對象,
class Channel
{
/**
* @ChoiceEntity(targetEntity="Bundle\ChannelBundle\Entity\ChannelCategory", allowNull=true)
* @Type("Bundle\ChannelBundle\Entity\ChannelCategory")
*/
public $category;
/**
* @ChoiceEntity(targetEntity="Bundle\ChannelBundle\Entity\Theme", allowNull=true)
* @Type("Bundle\ChannelBundle\Entity\Theme")
*/
public $theme;
}
這裏自定義驗證:
class ChoiceEntityValidator extends ConstraintValidator
{
/**
*
* @var type
*/
private $entityManager;
/**
*
* @param type $entityManager
*/
public function __construct($entityManager){
$this->entityManager = $entityManager;
}
/**
* @param FormEvent $event
*/
public function validate($object, Constraint $constraint)
{
if($constraint->getAllowNull() === TRUE && $object === NULL){//null allowed, and value is null
return;
}
if($object === NULL || !is_object($object)) {
return $this->context->addViolation($constraint->message);
}
if(!$this->entityManager->getRepository($constraint->getTargetEntity())->findOneById($object->getId())) {
$this->context->addViolation($constraint->message);
}
}
}
那麼有沒有一種方法可以通過存儲庫結果中的值更改自定義驗證器中的$對象?
好點,我不知道數據變形金剛,這就是爲什麼我想這樣做,但我知道這不是一個最佳實踐,謝謝! –