Php Symfony表单:将具有构造函数的对象分配到数据库
我试图使用symfony表单将实体的对象持久化到数据库中。实体有一个构造函数,因此我提供了对象伪数据,但我不能用表单更改此数据。有没有人能解决如何创建需要构造函数的对象的问题Php Symfony表单:将具有构造函数的对象分配到数据库,php,forms,symfony,symfony-forms,Php,Forms,Symfony,Symfony Forms,我试图使用symfony表单将实体的对象持久化到数据库中。实体有一个构造函数,因此我提供了对象伪数据,但我不能用表单更改此数据。有没有人能解决如何创建需要构造函数的对象的问题 public function new(Request $request) { $player = new Player("Dummy",0); $form = $this->createFormBuilder($player) ->a
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);
好吧,看来我发现了错误 我没有为构建视图的同一控制器定义POST路由
很抱歉:)事实上,由于Symfony表单的工作方式,$player将包含任何更新的信息。在这种情况下,不需要使用getData。原来的海报真的只需要遵循文档中的示例。非常感谢您的回复。但是数据包含的值总是“Dummy”和0。因此,似乎存在一个错误,即表单中输入的数据实际上没有提交。因此,form->getData没有提供我需要的数据。