gpt4 book ai didi

symfony - 在 Symfony2.1 中以现有形式重新加载或清除数据

转载 作者:行者123 更新时间:2023-12-04 09:26:31 24 4
gpt4 key购买 nike

我们从 Symfony 2.0 升级到 2.1。在 2.0 中,我曾经像这样修改实体并重新加载表单:

$form->setData($entity);

但是 Symfony 2.1 ( https://github.com/symfony/symfony/pull/3322 ) 不再允许这样做。我收到以下错误:
You cannot change the data of a bound form

有没有办法将表单重新绑定(bind)到实体/重新加载数据?

最佳答案

我做了一些可以解决问题的方法……不知道这是否是最好的方法,但是……

public function contactAction(Request $request){
$task = new myBundle();

$form = $this->createFormBuilder($task)
->add('email', 'text', array('label'=>'E-mail'))
->add('message', 'textarea')
->add('newsletter', 'checkbox', array('label'=>'blabla','required'=>false))
->getForm();

$cloned = clone $form;

if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
if ($form->isValid()) {
[... code ...]
$form = $cloned;
}
}
return $this->render(
'myBundle:Default:contact.html.twig',
array('form' => $form->createView())
);
}

通过克隆刚刚实例化的表单对象,我可以将“完整”对象切换为空对象,并保留所有参数。

关于symfony - 在 Symfony2.1 中以现有形式重新加载或清除数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12591495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com