Symfony原则验证不适用于嵌入式注释



我只是想确保Embeddable中字段上的@Assert\NotBlank在php单元测试中工作(使用Doctrine 2.7和Symfony 5.1(,但似乎没有进行检查。为了确保这与测试环境无关,我用注入的验证器测试了同样的东西在测试服务器上的路由上,结果相同。嵌入实体上对断言的违反可以正常工作。

为什么会出现这种情况,有什么建议吗?

所以基本上:

/**
* @package AppEntityEmbeddables
* @ORMEmbeddable
*/
class MyEmbeddable
{
/**
* @var string
* @ORMColumn(type="string", nullable=false)
* @AssertNotBlank
*/
private string $text;
}

带有

/**
* @ORMEntity(repositoryClass=MyThingRepository::class)
*/
class MyThing
{
//..ID-stuff
/**
* @var MyEmbeddable
* @ORMEmbedded(class="AppEntityEmbeddablesMyEmbeddable")
*/
private MyEmbeddable $embeddableTestVar;
}

将导致:

$myThing = new MyThing();
$validator = Validation::createValidatorBuilder()->enableAnnotationMapping()->getValidator();
dd($validator->validate($myThing));

打印一个空数组。

如有任何帮助,我们将不胜感激!

尝试添加@AssertValid注释

/**
* @ORMEntity(repositoryClass=MyThingRepository::class)
*/
class MyThing
{
//..ID-stuff
/**
* @AssertValid
*
* @var MyEmbeddable
* @ORMEmbedded(class="AppEntityEmbeddablesMyEmbeddable")
*/
private MyEmbeddable $embeddableTestVar;
}

相关内容

  • 没有找到相关文章

最新更新