0

我在 Symfony2 中嵌入表单时遇到问题。我可能在技术上做错了什么,但也许我犯的错误是在 db-setup 级别上,并且首先不需要嵌入表单。在我展示代码之前,让我们首先关注这一点。

我制作了两个实体:V 和 O。它们都代表位置,但指的是不同类型的位置。通过 ref-id,它们各自引用一个实体地址。多个 V 可以引用同一个地址,多个 O 可以引用同一个地址,甚至在同一个地址上可能有一个 V 和一个 O。显示 V、O 和地址工作(控制器和路由工作)。创建或编辑地址也可以正常工作;我创建了一个名为 AddressType 的表单类型,它也可以渲染和工作。

V 和 O 也有 formTypes:VType 和 OType。他们有自己的 Twig 模板、路由、控制器操作等。

现在我希望用户能够在表单中输入新的 V,其中还有可用于输入新地址的字段。所以我不希望用户从某种列表中选择一个已经存在的地址(但是我得到了这个工作),但我希望他们能够添加一个新地址。如果该地址已经存在于 db 表“Addresses”中(这很有可能),Symfony2 应该引用该现有地址,而不是再次创建相同的地址。

现在我的问题是,我没有成功呈现嵌入在 V 或 O 表单中的地址表单 (AddressType)。基本上,我希望将 AddressType 表单呈现为 V 或 O 表单的一部分。这可能吗?

但是,很可能是我的 db-setup 不好,我不应该将 Address 设为单独的实体(和 db 表),但我应该将其设为实体 V 和 O 的一部分。这也可以解决我猜是问题,但这是一种好习惯吗?

我提前感谢您的帮助。

4

1 回答 1

0

我有类似的问题。这是一种复杂的形式,可能不太容易做到。最好的方法是制作自定义表单类型甚至是原始表单(我更喜欢),并直接使用 Request 类编写为您处理此表单的控制器操作。然后,您可以使用 ConstraintCollections 验证您的输入,并直接使用您的类和 Doctrine 的 EntityManager 组合您的实体。

这个链接可能会变得有用 - 或者至少在验证非对象方面帮助了我很多: http ://www.ricardclau.com/2011/11/how-to-use-symfony2-validator-component-without-forms-实体和数据数组/

所以基本上你必须在这里写代码。

于 2012-04-25T12:26:13.587 回答