处理包含许多字段的表单

时间:2012-07-24 22:27:27

标签: ajax yii jeditable flyweight-pattern

我有一个非常large webform,它是我的Yii网络应用程序的中心。 表单实际上由多个html表单元素组成,其中许多是根据需要通过AJAX加载的。

由于表单的大小和复杂性,有多个保存或提交按钮并不可行。我宁愿更新数据库中的每个字段,因为它是使用可编辑或类似jeditable的功能异步AJAXing到服务器的新值。

有人做过这样的事吗?从理论上讲,我认为我可以设置AJAX端点并让每个控件都传递其名称,新值和要执行的CRUD操作。然后,端点可以根据某种地图适当地路由请求并返回产品。看起来有人必须先解决这个问题,我不想浪费时间重新发明轮子。

感谢您的时间,感谢您对建筑/实施的看法。

2 个答案:

答案 0 :(得分:1)

在类似的情况下,我决定只使用CActiveForm来简化Yii标准验证(它可以使用Ajax验证),避免使用“required”属性。当然,要保持形式的逻辑结构,以便在良好的视野中。

一般来说你是对的。我手动使用jQuery为控制器生成AJAX请求(和任何其他操作),并根据需要处理它们。

所以你可以在控制器中使用CRUD(分析请求中的参数)和自定义jQuery(使用组选择器),但你很难直接在CActiveForm中使用它(这很好:压缩不能总是击败了模型的逻辑和结构。)

在PHP中使用javascript的任何复合解决方案都会影响非平凡应用程序的灵活性。

答案 1 :(得分:0)

昨晚睡觉后,我发现了这个帖子:

jQuery focus/blur on form, not individual inputs

我在客户端使用此修改版本通过AJAX更新每个表单,而不是更新每个字段。每个表单在两秒不活动后自动提交其数据。缺点是如果浏览器崩溃,客户端可能会丢失一些数据,但好处是我可以使用Yii的内置控制器操作,而且我不必编写大量自定义PHP。由于我的形式很小,但有很多,但到目前为止它似乎运作良好。

感谢Alexander的出色表意,感谢Afnan的帮助:)