Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Doctrine orm Symfony-在插入、更新或删除中以不同方式验证实体_Doctrine Orm_Symfony_Symfony Forms_Symfony Validator - Fatal编程技术网

Doctrine orm Symfony-在插入、更新或删除中以不同方式验证实体

Doctrine orm Symfony-在插入、更新或删除中以不同方式验证实体,doctrine-orm,symfony,symfony-forms,symfony-validator,Doctrine Orm,Symfony,Symfony Forms,Symfony Validator,我希望在创建、更新或删除实体时以不同的方式验证实体原则 在我的实体类中有一个实体约束验证器 // src/AppBundle/Entity/AcmeEntity.php use AppBundle\Validator\Constraints as AcmeAssert; /** * @AcmeAssert\CustomConstraint */ class AcmeEntity { // ... protected $name; // ... } 在我的Custom

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

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

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

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

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

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

做这个最好的方法是什么

我认为这个问题在很多应用中都很常见

谢谢大家;)

通过传递验证组创建表单时,可以使用或处理它。 例如,创建表单时在控制器中

$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;
    }

这就是创建验证组的目的

由于Symfony表单从实体注释中读取验证,并在内部使用验证程序组件,因此您可以在文档中查看以下文章:


我建议您使用symfony2验证组切换到不同的约束验证器。事实上,在执行实体验证器之前,使用GOUP进行验证并确定验证类型更符合逻辑。谢谢你的回答!