需要:能够动态构建表单
结构(简单的想法不是实际的结构)
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',这个插件很旧,并且是为了推动而不是教条,但这是我追求的基本想法。那你怎么做呢?
请注意我不希望动态地将表单添加到当前表单中,我已经可以执行此操作了,这正是我的管理部分中实现的内容,我需要以编程方式创建一个完整的新表单
答案 0 :(得分:1)
我创造了你所描述的东西,就像你说的那样。
我有一个模型FormDefinition
,它定义了一个表单,并有一个FormField
的集合。每个表单字段都有widget_class
,widget_options
,validator_class
和validator_options
。
我有一个自定义myForm
,它的构造函数需要FormDefinition
。在setup()
myForm
中,我遍历所有字段,实例化小部件和验证器。
在我们的解决方案中,我们需要/希望将所有表单数据存储在单独的表格中。我的myForm
从sfDoctrineForm
延伸,我的后端有一些逻辑,通过调用适当的Doctrine方法创建/更新(php)模型和数据库定义。但你也可以创建一个EAV商店。