Это первый раз, когда я пытался использовать формы с Symfony, и я полностью застрял. Я уверен, что это будет что-то простое.
У меня есть простой контроллер, настроенный так (с использованием Symfony 2.7 и FOSRestBundle 2.0):
/**
* @View()
*/
public function postPredictionsAction(Request $request)
{
$form = $this->createFormBuilder(['id' => '1', 'description' => '2'])
->add('id', 'text')
->add('description', 'text')
->getForm();
$form->handleRequest($request);
if ($form->isValid()) {
return true;
}
print_r($request->request->all());
print_r($form->getData());
print_r((string) $form->getErrors(true, false));
return false;
}
Но моя форма всегда недействительна, хотя ошибок нет:
curl -X POST --data 'id=foo&description=bar' http://localhost:8080/bracket/predictions
Array
(
[id] => foo
[description] => bar
)
Array
(
[id] => 1
[description] => 2
)
false
Итак, похоже, что данные моего запроса не попадают в форму, и по какой-то причине форма недействительна, хотя ошибок вообще не печатается.
РЕДАКТИРОВАТЬ: после долгих размышлений кажется, что вызов handleRequest()
определил, что форма не была отправлена и, следовательно, не проверена, то есть я попадаю в ситуацию, описанную выше.
Поэтому вместо handleRequest()
я могу заменить его на submit()
в качестве обходного пути. Это описано как устаревшее поведение в документах:
http://symfony.com/doc/2.7/cookbook/form/direct_submit.html#cookbook-form-submit-request
Итак, я явно все еще делаю что-то не так, но я не вижу, что именно, из документации Symfony.