Платформа API возвращает ошибку типа вместо ошибки проверки при передаче значения NULL в строковое поле - PullRequest
0 голосов
/ 29 апреля 2018

Я использую API Platform v2.2.5, и в процессе написания тестов для моих ресурсов я обнаружил, что, когда null предоставляется для поля типа string, в процессе денормализации возвращается ответ об ошибке, который включает сообщение, не дружественное клиенту, и трассировку стека. Это отличается от того, предоставлена ​​ли пустая строка или поле полностью опущено, что возвращает структурированный ответ проверки. Как я могу вместо этого возвратить ответ об ошибке проверки, когда предоставлена ​​пустая строка?

Entity

class MyEntity 
{
    /**
     * @var string|null
     *
     * @ORM\Column(type="string", length=255)
     *
     * @Assert\NotBlank
     *
     * @Groups({"read", "write"})
     */
    private $title;

    /**
     * @return null|string
     */
    public function getTitle(): ?string
    {
        return $this->title;
    }

    /**
     * @param string $title
     * @return WorkoutTemplate
     */
    public function setTitle(?string $title): self
    {
        $this->title = $title;

        return $this;
    }
}

Конфигурация ресурса

App\Entity\MyEntity:
  collectionOperations
    post:
      denormalization_context:
        groups:
          - write

Ошибка ответа Example of issue

Пример структуры проверки enter image description here

1 Ответ

0 голосов
/ 30 апреля 2018

Понял это благодаря ребятам из канала Symfony Slack # api-platform.

Определения столбцов Doctrine используются во время процесса сериализации, поэтому для устранения проблемы требовалось nullable=true. Как только это было добавлено, процесс сериализации сработал, и нулевое значение было обнаружено на уровне проверки, возвращая ожидаемую структуру ответа.

...