如何在symfony2中使用具有多个不同表单小部件的实体字段类型数组


How to use entity field type array with multiple different form widgets in symfony2

我正在查看一个名为 content 的实体,我将在其中将有关内容(textfield1、textfield2、bgcolor 等)的数据存储在实体内容内的数组中(如果这不是最好的方法,请告诉我)。

我想把它放在一个数组中而不仅仅是为它制作单独的实体字段的原因是我将有不同的"内容模板",因此每个模板的数据字段的数量和类型会有所不同(当然每个模板都有自己的表单构建器;ContentXType.php, contentYType.php etc.)。一种内容类型可能只有一个文本字段,而另一种内容类型可能有 10 个文本字段。我最初开始使用 datafield1、datafield2 等进行设计,但意识到这会给我留下一堆空值,而且不会很漂亮 =)

在保存时,我将在一个名为 contentRender 的不同字段中为此内容生成一个 html 输出。

在编辑时,我将再次希望能够在不同的表单小部件中打开我的数组中的不同数据字段,例如文本字段中的 textfield1、文本区域中的 textfield2 和颜色选择器表单小部件中的 bgcolor(我的数组的第三个值)(我想我会使用带有 jQuery 颜色选择器小部件的文本字段)。

所以我的小问题是实体类型数组是否是最好的方法,我甚至可以从我的表单构建器中从数组中挑选值 1 并将其放在一个字段中,值 2 放在不同的表单字段中等等?

或者我是否需要使用一个名为content_data并使用关系的新实体?

或者更好的方法是为我计划使用的每种内容类型定义一个新实体,然后在主内容表单中嵌入该内容类型的表单?

经过更多的研究,我将为模板定义一个新的实体,我将在其中指定我的模板,并为每个模板的渲染提供不同的树枝文件。每个模板的实际数据(字段数量可变)将存储在序列化数组中。