我有一个实体A的项目,它包含一个属性b,它应该是一个有效的B或null。 B本身就是强制性财产。
如何断言b有效或为空?我尝试使用Valid断言,但null无效,所以它抱怨mandatoryItem为null。
<?php
// use statements
class A
{
/**
* @ORM\OneToOne(targetEntity="B")
* @Assert\Valid
*/
private b;
}
// meanwhile, in another file...
class B
{
/**
* @Assert\NotBlank
*/
private $mandatoryItem;
}
答案 0 :(得分:2)
在执行以下任何操作之前,请确保已启用Assert
。如果那已经是原因,下面的步骤可能会对您有所帮助。
如果您使用表单提交数据并获得该表单的formType,但Valid
约束不起作用,则可以执行此操作:
删除Valid
断言。
在AType
类buildForm()
块中,您可以像这样添加它:
...
$builder->add('B', new BType(), array(
'required' => false,
));
...
同样在AType
类中添加此功能:
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Your\AppBundle\Entity\A',
'cascade_validation' => true,
));
}
'cascade_validation' => true,
与Valid
相同,但在表单中。