Я строю API с Symfony 3, следуя спецификации API JSON (Documentation).Как изменить запрос перед отправкой данных в форму?
При подаче новых данных, запрос имеет следующий формат:
{
"type": "entity",
"id" : null,
"attributes" : {
"name" : "Test name"
}
}
Но проблема в том, запрос не соответствует формату, ожидаемых форм Symfony это из-за дополнительного объекта attributes
.
Таким образом, я хочу, чтобы иметь возможность преобразовать запрос перед подачей формы, чтобы форма могла заполнить базовую сущность.
Я попытался зарегистрировать FormEvents:PRE_SUBMIT
и выполнить логику, но, похоже, у меня нет доступа к содержимому Запроса.
$builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) {
$data = $event->getData();
var_dump($data);
die();
});
$event->getData()
является null
.
У меня также есть возможность зарегистрировать DataTransformer
, но он зарегистрирован в поле и не имеет доступа к запросу.
Я не хочу делать это вручную в контроллере, поскольку это произойдет во всех моих формах (или, по крайней мере, в большинстве случаев), поэтому я ищу более общий способ преобразования запроса, но на данный момент я не могу понять, как это сделать.
Спасибо за помощь.
Это именно то, что я ищу. Я прочитал всю документацию по Symfony 2 и CookBook, и я не могу вспомнить, что это объясняет, что вы можете это сделать. Это новая функция Symfony 3 или она просто не документирована? – Elorfin
Не документировано, похоже, это похоже на то, что Symfony 2.3 – Terenoth
Недостатком является то, что мне нужно будет дублировать некоторую внутреннюю логику (например, '$ _FILES' и проверку метода), поскольку все методы являются« частными ». Просто небольшой недостаток, поскольку он чище всех решений, которые я думал. – Elorfin