如何验证 api 平台中的相关字段?

问题描述

我有一个问题,也许有人可以帮助我。我试图找到答案,但没有结果。

问题:

我有2个实体评论和视频,评论属于视频(多对一)。当向 /comments 发送不存在视频的创建请求时,我收到下一个错误

    "type": "https://tools.ietf.org/html/rfc2616#section-10","title": "An error occurred","detail": "Item not found for resource \"App\\Entity\\Video\" with id \"2\".",

和状态码 400。

我想改变这种行为并收到下一个回复

{
    "type": "https://tools.ietf.org/html/rfc2616#section-10","violations": [
        {
            "propertyPath": "video","message": "Item not found for resource \"App\\Entity\\Video\" with id \"2\".","code": "c1051bb4-d103-4f74-8988-acbcafc7fdc3"
        }
    ]
}

和状态 422。

问题:

如何验证相关字段? 我已经尝试创建自定义验证器,但 /vendor/api-platform/core/src/Serializer/AbstractItemnormalizer.PHP 在我验证之前返回错误

如果您对此有任何解决方案,我会非常高兴。不管怎样,谢谢!

解决方法

https://symfony.com/doc/current/reference/constraints/Valid.html 可能会有所帮助:您只需添加验证器 @Assert\Valid 来检查孩子是否存在