Я пытаюсь сопоставить и проверить, используя полезную нагрузку запроса #[MapRequestPayload] с вложенными данными запроса. Когда я хочу сопоставить запрос всего с одним вопросом, все работает нормально, но когда я переключаю тип свойства $question в Quiz DTO, я получаю эту ошибку проверки.
CreateQuizDto .php
class CreateQuizDto
{
#[Assert\NotBlank()]
#[Assert\Length(min: 1, max: 255)]
public string $label;
#[Assert\Type('countable')]
#[Assert\All(new Assert\Type(CreateQuestionDto::class))]
#[Assert\Valid]
public array $questions;
}
CreateQuestionDto.php
class CreateQuestionDto
{
#[Assert\NotBlank()]
#[Assert\Length(min: 1, max: 255)]
public string $label;
}
Controller.php
#[Route('/api', format: 'json')]
class QuizController extends AbstractController
{
#[Route('/quiz', name: 'app_quiz', methods: ['POST'])]
public function index(#[MapRequestPayload] CreateQuizDto $dto): JsonResponse
{
return $this->json([
'dto' => $dto
]);
}
}
Пример тела запроса
{
"label": "Example Quiz",
"questions": [
{
"label": "Example Question 1"
},
{
"label": "Example Question 2"
}
]
}
Ошибка ответа
{
"type": "https://symfony.com/errors/validation",
"title": "Validation Failed",
"status": 422,
"detail": "questions[0]: This value should be of type App\\Dto\\CreateQuestionDto.\nquestions[1]: This value should be of type App\\Dto\\CreateQuestionDto.",
"violations": [
{
"propertyPath": "questions[0]",
"title": "This value should be of type App\\Dto\\CreateQuestionDto.",
"template": "This value should be of type {{ type }}.",
"parameters": {
"{{ value }}": "array",
"{{ type }}": "App\\Dto\\CreateQuestionDto"
},
"type": "urn:uuid:ba785a8c-82cb-4283-967c-3cf342181b40"
},
{
"propertyPath": "questions[1]",
"title": "This value should be of type App\\Dto\\CreateQuestionDto.",
"template": "This value should be of type {{ type }}.",
"parameters": {
"{{ value }}": "array",
"{{ type }}": "App\\Dto\\CreateQuestionDto"
},
"type": "urn:uuid:ba785a8c-82cb-4283-967c-3cf342181b40"
}
],
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... quest-data
Symfony 7 Сопоставляет данные вложенного запроса ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1732567454
Anonymous
Я пытаюсь сопоставить и проверить, используя полезную нагрузку запроса #[MapRequestPayload] с вложенными данными запроса. Когда я хочу сопоставить запрос всего с одним вопросом, все работает нормально, но когда я переключаю тип свойства $question в Quiz DTO, я получаю эту ошибку проверки.
CreateQuizDto .php
class CreateQuizDto
{
#[Assert\NotBlank()]
#[Assert\Length(min: 1, max: 255)]
public string $label;
#[Assert\Type('countable')]
#[Assert\All(new Assert\Type(CreateQuestionDto::class))]
#[Assert\Valid]
public array $questions;
}
CreateQuestionDto.php
class CreateQuestionDto
{
#[Assert\NotBlank()]
#[Assert\Length(min: 1, max: 255)]
public string $label;
}
Controller.php
#[Route('/api', format: 'json')]
class QuizController extends AbstractController
{
#[Route('/quiz', name: 'app_quiz', methods: ['POST'])]
public function index(#[MapRequestPayload] CreateQuizDto $dto): JsonResponse
{
return $this->json([
'dto' => $dto
]);
}
}
Пример тела запроса
{
"label": "Example Quiz",
"questions": [
{
"label": "Example Question 1"
},
{
"label": "Example Question 2"
}
]
}
Ошибка ответа
{
"type": "https://symfony.com/errors/validation",
"title": "Validation Failed",
"status": 422,
"detail": "questions[0]: This value should be of type App\\Dto\\CreateQuestionDto.\nquestions[1]: This value should be of type App\\Dto\\CreateQuestionDto.",
"violations": [
{
"propertyPath": "questions[0]",
"title": "This value should be of type App\\Dto\\CreateQuestionDto.",
"template": "This value should be of type {{ type }}.",
"parameters": {
"{{ value }}": "array",
"{{ type }}": "App\\Dto\\CreateQuestionDto"
},
"type": "urn:uuid:ba785a8c-82cb-4283-967c-3cf342181b40"
},
{
"propertyPath": "questions[1]",
"title": "This value should be of type App\\Dto\\CreateQuestionDto.",
"template": "This value should be of type {{ type }}.",
"parameters": {
"{{ value }}": "array",
"{{ type }}": "App\\Dto\\CreateQuestionDto"
},
"type": "urn:uuid:ba785a8c-82cb-4283-967c-3cf342181b40"
}
],
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79224556/symfony-7-map-nested-request-data[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия