gpt4 book ai didi

symfony - 如何在 Symfony 中的表单中添加未绑定(bind)的字段,否则绑定(bind)到实体?

转载 作者:行者123 更新时间:2023-12-03 11:43:59 25 4
gpt4 key购买 nike

也许我错过了显而易见的事情,但是我如何(或者我可以)向一个绑定(bind)到实体的 Symfony 表单添加一个额外的“未绑定(bind)”字段?

假设我有一个带有字段 first_name 的实体和 last_name .我在表单课上做典型的事情 buildForm方法。

$builder
->add('first_name')
->add('last_name')
;

这在我的 Controller 中:
$editForm = $this->createForm(new MyType(), $entity);

这很好用,但我想添加另一个文本框,我们称之为“额外”,并在 POST 操作中接收值。如果我这样做 $builder->add('extra')‍ ,它提示说

NoSuchPropertyException in PropertyAccessor.php line 479:

Neither the property "extra" nor one of the methods "getExtra()", "extra()", "isExtra()", "hasExtra()", "__get()" exist and have public access in class...



哪个是对的。我只是想用它来从用户那里收集一些额外的信息,并用它做一些事情,而不是将它与实体一起存储。

我知道如何制作一个完全独立的表格,但不是一个“混合”的表格。
这可能吗?

最佳答案

在您的表单中添加一个带有 false property_path 的文本字段:

$builder->add('extra', 'text', array('property_path' => false));

然后,您可以访问 Controller 中的数据:
$extra = $form->get('extra')->getData();

更新

自 Symfony 2.1 以来的新方法是使用 mapped选项并将其设置为 false .
->add('extra', null, array('mapped' => false))
Henrik Bjørnskov 的更新信息致谢(下方评论)

关于symfony - 如何在 Symfony 中的表单中添加未绑定(bind)的字段,否则绑定(bind)到实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12765368/

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