如何在 Api 平台中使用 Doctrine 扩展

How to use Doctrine Extensions in Api Platform

我在 Api 平台的 Symfony 4 项目中使用 stofDoctrineExtensionsBundle。我激活了 sluggabletimestampable 扩展。当我手动坚持实体时,它就像一个魅力,即在固定装置中,但是当我通过 POST collectionOperations 坚持时,它不起作用,并说那些字段(slug、createdAt 和 updatedAt)是必需的. 几天后我找不到解决方案。 非常感谢(这是我的第一个问题)。

这些字段不应该是必需的。

sluggable 和 timestampable 扩展在 Flush 上设置它们的值,这是一个原则事件,它计算对象中发生的变化并运行 SQL 查询以实际更新数据库。 API 平台将在 WRITE 阶段实现这一点,这是在验证之后,因此验证不会看到这些值。删除 @Assert\NotBlank@Assert\NotNull.

等字段的任何断言

如果字段在其映射配置中不可为空(例如 @ORM\Column()),它们将按要求出现在 swagger 中,打开 api 或由 [=23= 生成的 Hydra 文档] 平台。一些客户端,如管理客户端和来自客户端生成器的客户端,使用此文档,因此将为所需的属性进行输入。 将以下注释添加到这些属性的文档块中:

* @ApiProperty(required=false)

此注释需要靠近文件顶部:

use ApiPlatform\Core\Annotation\ApiProperty;