такая, есть DTO, где имеется:
/**
* @Assert\NotBlank()
* @Assert\NotNull()
* @Assert\Type(type="string")
* @var string
*/
private string $username;
Если из реквеста приходит такое
{"username": 123456}
то Serializer автоматически кастит int в string.
Можно ли это как-то отключить?
у тебя и в аннотации написано type=string и у свойства тип string что по-твоему должен делать сериалайзер?
и вроде вот так правильно @Assert\Type("string")
Убрал свойства string, заменил Assert, но проблема остаётся. Подозреваю, что до начала вылидации int конвертируется в string и попадает в валидатор. https://gist.github.com/MyZik/11e4d2f38371fa30f1944b5a6485f260
@Serializer\Type("int") А точно у тебя юзернейм - инт?
username должен быть string, и по сути, если передаётся int или ещё что - должно быть выброшено исключение. Но этого не происходит, так как реквест ещё до валидации кастится. где - хз
https://stackoverflow.com/questions/60337769/symfony-serializer-type-casting-while-deserializing
Обсуждают сегодня