Я пытаюсь сохранить объект сущности в базе данных с помощью форм Symfony. У объекта есть конструктор, поэтому я даю фиктивные данные объекта, но я не могу изменить эти данные с помощью форм. Есть ли у кого-нибудь решение, как создать объект, требующий конструктора?
public function new(Request $request)
{
$player = new Player("Dummy",0);
$form = $this->createFormBuilder($player)
->add('name', TextType::class)
->add('points', IntegerType::class)
->add('save', SubmitType::class, array('label' => 'Create Player'))
->getForm();
$form->handleRequest($request);
$data = $form->getData();
$name = $data->getName();
error_log($name);
$this->PlayerRepository->store($player);
return $this->render('default/new.html.twig', array(
'form' => $form->createView(),
));
}
$ name всегда имеет значение «Dummy», независимо от того, что я набираю в форме.






Вы сохраняете $player здесь:
$this->PlayerRepository->store($player);
Но ваши фактические данные плеера из формы находятся в $data, и этот $data должен быть сохранен:
$this->PlayerRepository->store($data);
Спасибо вам большое за ваш ответ. Но значения, содержащиеся в данных, всегда равны «фиктивным» и 0. Таким образом, похоже, есть ошибка, заключающаяся в том, что данные, введенные в форму, фактически не отправляются. Поэтому form-> getData не дает мне нужных данных.
Ладно, кажется, я нашел ошибку.
Я не определял маршрут POST для того же контроллера, который создает представление.
простите за это :)
Фактически, из-за того, как работают формы Symfony, $ player будет содержать в себе любую обновленную информацию. В этом случае использование getData не требуется. Исходный плакат действительно должен следовать примерам в документации.