【问题标题】:Symfony Doctrine validation not working with Annotations on EmbeddablesSymfony Doctrine 验证不适用于可嵌入的注释
【发布时间】:2021-01-27 12:02:33
【问题描述】:

我只是想确保我的 @Assert\NotBlank 在 Embeddable 中的一个字段上可以在 phpunit-test 中工作(使用 Doctrine 2.7 和 Symfony 5.1),但似乎没有检查制成。 为了确保它与 test-env 无关,我使用注入的验证器测试了相同的东西 在具有相同结果的测试服务器上的路由上。嵌入实体上的断言冲突正常工作。

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

所以基本上:

/**
 * @package App\Entity\Embeddables
 * @ORM\Embeddable
 */
class MyEmbeddable
{
    /**
     * @var string
     * @ORM\Column(type="string", nullable=false)
     * @Assert\NotBlank
     */
    private string $text;
}

/**
 * @ORM\Entity(repositoryClass=MyThingRepository::class)
 */
class MyThing
{
    //..ID-stuff
    /**
     * @var MyEmbeddable
     * @ORM\Embedded(class="App\Entity\Embeddables\MyEmbeddable")
     */
    private MyEmbeddable $embeddableTestVar;
}

会导致:

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

打印一个空数组。

任何帮助将不胜感激!

【问题讨论】:

  • 为什么是-1?我很确定其他不熟悉该主题的人可以从中受益。

标签: symfony validation doctrine


【解决方案1】:

尝试添加@Assert\Valid注解

/**
 * @ORM\Entity(repositoryClass=MyThingRepository::class)
 */
class MyThing
{
    //..ID-stuff
    /**
     * @Assert\Valid
     *
     * @var MyEmbeddable
     * @ORM\Embedded(class="App\Entity\Embeddables\MyEmbeddable")
     */
    private MyEmbeddable $embeddableTestVar;
}

【讨论】:

    猜你喜欢
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 2020-11-10
    • 2017-05-30
    • 1970-01-01
    相关资源
    最近更新 更多