如何在Symfony2表单中处理EntityChoiceList中的“other”选项?

时间:2012-05-29 13:00:23

标签: symfony symfony-forms

我有一个如下所述的模型:

http://yuml.me/diagram/class/[Product]0..*-1[Brand]

我还有一个表单来创建一个新产品,其中包含一个字段entity,其中包含一个包含所有品牌的下拉列表。

现在我想在此列表中添加“其他”值,以便用户在另一个文本字段中手动指定品牌。

问题是:是否有一种干净的方法来管理这种情况(例如,在列表中添加值“其他”,这不是一个实体,并使表单验证工作) Symfony2形成?

1 个答案:

答案 0 :(得分:2)

你可以用两种方式来做,

  • 您可以订阅FormEvents::BIND_CLIENT_DATA表单活动。在事件方法中,您可以从文本中创建新的Brand对象,保存它并通过调用$event->setData($data)将ID设置为表单。请参阅this食谱条目。

OR

  • 您可以附加数据转换器。在其reverseTransform方法中,您可以创建+保存对象并返回其ID。请参阅this食谱条目。