2

我想在创建、更新或删除实体时以不同方式验证实体原则。

我的实体类中有一个实体约束验证器。

// src/AppBundle/Entity/AcmeEntity.php
use AppBundle\Validator\Constraints as AcmeAssert;

/**
* @AcmeAssert\CustomConstraint
*/
class AcmeEntity
{
    // ...
    protected $name;

    // ...
}

在我的 CustomConstraint 中,我想确定是否将更新、创建或删除实体以执行特定的验证器。

使用工作单元是一种解决方案吗?

做这个的最好方法是什么?

我认为这个问题在很多应用程序中很常见?

谢谢大家 ;)

4

2 回答 2

5

您可以根据提交的数据使用验证组,也可以在创建表单时通过传递验证组来处理它。例如,在您的控制器中创建表单时;

$form = $this->createForm(new AcmeType(), $acme, ['validation_groups' => ['create']]);

然后你的实体会是这样的;

    /**
     * Get name
     *
     * @Assert\Length(min=2, max=11, groups={"create", "update"})
     * @AcmeAssert\ContainsAlphanumeric(groups={"create"}) // only applied when create group is passed
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }
于 2016-10-12T08:24:14.357 回答
1

这就是验证组的用途。

由于 Symfony Forms 从实体注释中读取验证并在内部使用 Validator 组件,因此您可以查看文档中的这些文章:

于 2016-10-12T08:25:23.467 回答