在Symfony自定义验证器中访问和验证API Platform API的响应值

Accessing and Validating Response Values from API Platform API in Symfony Custom Validators

提问人:Ed Ke 提问时间:5/3/2023 最后编辑:Ed Ke 更新时间:5/4/2023 访问量:104

问:

我正在尝试从 API 平台传递响应值并创建一个自定义验证器来使用验证器检查实体中的每个属性。但是,Validator 中的$value始终是指存储在数据库中的值,而不是我通过 API 收到的值,这是我要验证的值。

下面是 Entity 中属性的外观示例:

    #[ORM\Column]
    #[CustomTestValidator(['property' => 'status'])]
    private ?float $status = null;

自定义测试 .php:

<?php

namespace App\Validator;

use Symfony\Component\Validator\Constraint;

#[\Attribute(\Attribute::TARGET_PROPERTY | \Attribute::TARGET_METHOD | \Attribute::IS_REPEATABLE)]
class CustomTest extends Constraint
{

    public $property;
    public $permissionMessage = 'You do not have permission to modify the "{{ property }}" property.';
    public $noValuesSet = 'No values received.';
}

CustomTestValidator.php:

.... 


    public function validate($value, Constraint $constraint, )
    {
        /* @var App\Validator\CustomTest $constraint */
        dd($value); // returns the value stored in the database.
    }
....

它始终传递存储在数据库中的实际值,而不是响应。

我想在实体中的多个属性上使用该验证器。是否可以选择使用属性名称而不是纯值(一个属性)来接收它们 例如:['property1' => 'value1', 'property2' => 'value2'....]

编辑

我将举个例子以便更好地理解。我目前正在使用 PATCH 方法运行一个 API 请求,端点为 /api/test/{test-id}。请求正文包含值为 2 的字段“status”。但是,数据库中存储的“状态”字段的当前值为 1。

在我的验证函数中,我从数据库接收“状态”字段的值,该字段已经过验证,但我想要收到的。

PHP Symfony 验证

评论


答: 暂无答案