Symfony - 在 INSERT、UPDATE 或 DELETE 中以不同方式验证实体
Symfony - Validate entity differently in INSERT, UPDATE or DELETE
我想在创建、更新或删除实体时以不同的方式验证实体原则。
我的实体中有一个实体约束验证器 class。
// src/AppBundle/Entity/AcmeEntity.php
use AppBundle\Validator\Constraints as AcmeAssert;
/**
* @AcmeAssert\CustomConstraint
*/
class AcmeEntity
{
// ...
protected $name;
// ...
}
在我的 CustomConstraint 中,我想确定实体是否会被更新、创建或删除以执行特定的验证程序。
使用工作单元是一种解决方案吗?
制作这个的最佳方法是什么?
我认为这个问题在很多应用程序中很常见?
谢谢大家;)
您可以使用 validation groups based on the submitted data 或在通过验证组创建表单时处理它。
例如,在您的控制器中创建表单时;
$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 Forms 从实体注释中读取验证并在内部使用 Validator 组件,您可以在文档中查看这些文章:
我想在创建、更新或删除实体时以不同的方式验证实体原则。
我的实体中有一个实体约束验证器 class。
// src/AppBundle/Entity/AcmeEntity.php
use AppBundle\Validator\Constraints as AcmeAssert;
/**
* @AcmeAssert\CustomConstraint
*/
class AcmeEntity
{
// ...
protected $name;
// ...
}
在我的 CustomConstraint 中,我想确定实体是否会被更新、创建或删除以执行特定的验证程序。
使用工作单元是一种解决方案吗?
制作这个的最佳方法是什么?
我认为这个问题在很多应用程序中很常见?
谢谢大家;)
您可以使用 validation groups based on the submitted data 或在通过验证组创建表单时处理它。 例如,在您的控制器中创建表单时;
$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 Forms 从实体注释中读取验证并在内部使用 Validator 组件,您可以在文档中查看这些文章: