1

我有这个项目,其中一个实体 A 拥有一个属性 b,它应该是一个有效的 B 或 null。B 本身具有强制属性。

如何断言 b 有效或为空?我尝试使用 Valid 断言,但 null 无效,因此它抱怨强制项为 null。

<?php 
// use statements

class A
{
    /**
     * @ORM\OneToOne(targetEntity="B")
     * @Assert\Valid
     */
    private b;
}

// meanwhile, in another file...
class B
{
   /**
    * @Assert\NotBlank
    */
   private $mandatoryItem;
}
4

1 回答 1

2

在执行以下任何操作之前,请确保您已Assert启用。如果这已经是原因,则以下步骤可能对您有所帮助。

如果您使用表单提交数据并获得该表单的 formType,但Valid约束不起作用,您可以这样做:

删除Valid断言。

ATypebuildForm()块中,您可以像这样添加它:

...
$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但在表单内。

于 2012-11-09T17:14:30.190 回答