tet*_*anz 21 symfony-forms symfony symfony-2.1
也许我错过了显而易见的但我怎么(或者我可以)将一个额外的"未绑定"字段添加到另一个绑定到实体的Symfony表单中?
假设我有一个带字段first_name和实体的实体last_name.我在表单类buildForm方法中做了典型的事情.
$builder
->add('first_name')
->add('last_name')
;
Run Code Online (Sandbox Code Playgroud)
这在我的控制器中:
$editForm = $this->createForm(new MyType(), $entity);
Run Code Online (Sandbox Code Playgroud)
这很好用,但我想添加另一个文本框,让我们称之为"额外",并在POST操作中接收值.如果我这样做$builder->add('extra')?,那就抱怨了
PropertyAccessor.php第479行中的NoSuchPropertyException:
属性"extra"或方法"getExtra()","extra()","isExtra()","hasExtra()","__ get()"都不存在,并且在课堂上有公共访问权限......
哪个是对的.我只是想用它来收集用户的一些额外信息,并用它做一些事情,而不是将它与实体一起存储.
我知道如何制作一个完全独立的形式,而不是一个"混合"的形式.这可能吗?
fko*_*ler 62
在表单中添加一个带有false property_path的文本字段:
$builder->add('extra', 'text', array('property_path' => false));
Run Code Online (Sandbox Code Playgroud)
然后,您可以访问控制器中的数据:
$extra = $form->get('extra')->getData();
Run Code Online (Sandbox Code Playgroud)
UPDATE
自Symfony 2.1以来的新方法是使用该mapped选项并将其设置为false.
->add('extra', null, array('mapped' => false))
有关HenrikBjørnskov更新信息的信用(以下评论)
Eln*_*mov 27
从Symfony 2.1开始,使用mapped选项:
$builder->add('extra', 'text', [
'mapped' => false,
]);
Run Code Online (Sandbox Code Playgroud)