Symfony 1.4 Form Creator

时间:2011-08-18 21:33:17

标签: forms dynamic doctrine symfony1

需要:能够动态​​构建表单

结构(简单的想法不是实际的结构)

Admin: Form Assignment, where you create what field you want your new Form to have
FrontEnd: Where the New form will be implemented (this is the root of this question)
FronEnd Storage: When the New form is filled out the data points are written to a set of tables  

这个想法很简单,进入管理员,选择你想要的字段,字段类型和标签

即。

Field Name:*Enter a specific field name, like f_name or email  
FieldType: [Text, TextArea, Password, Radio, DatePicker, CheckBox, Select, etc]  
Label: What to display on the resulting form, f_name = First Name, etc  

然后我点击FrontEnd上生成New form的页面,我填写它,然后将数据存储在FrontEnd Storage表中。

所以问题是,关于如何实现这一点的想法,我已经完成了管理部分,它正在动态构建并适当地绑定一个前端和我想要的建议。

目前我的想法是简单地创建一个shell形式,这是一个巨大的丑陋的switch语句,为每个字段构建sfForm元素和适当的验证器(从管理区域输入的字段给出的字段)

我觉得这是'错误'的方式,我确实找到了一个插件'spyFormBuilderInterface2Plugin',这个插件很旧,并且是为了推动而不是教条,但这是我追求的基本想法。那你怎么做呢?

请注意我不希望动态地将表单添加到当前表单中,我已经可以执行此操作了,这正是我的管理部分中实现的内容,我需要以编程方式创建一个完整的新表单

1 个答案:

答案 0 :(得分:1)

我创造了你所描述的东西,就像你说的那样。

我有一个模型FormDefinition,它定义了一个表单,并有一个FormField的集合。每个表单字段都有widget_classwidget_optionsvalidator_classvalidator_options

我有一个自定义myForm,它的构造函数需要FormDefinition。在setup() myForm中,我遍历所有字段,实例化小部件和验证器。

在我们的解决方案中,我们需要/希望将所有表单数据存储在单独的表格中。我的myFormsfDoctrineForm延伸,我的后端有一些逻辑,通过调用适当的Doctrine方法创建/更新(php)模型和数据库定义。但你也可以创建一个EAV商店。