形式改变最佳实践

时间:2013-07-10 10:39:14

标签: forms symfony

在我的模板中,我有一个国家/地区选择框,元素根据国家/地区动态更改。例如,如果我选择美国,省将是包含美国的选择框。如果我选择其他国家/地区,省将只是一个文本字段。我知道我必须通过Javascript来做到这一点,但我想知道这种情况下的最佳做法。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

这个问题几乎每天都出现在stackoverflow上...如何处理sub-select的像country-> state ...?

多个相关选择字段类型的最佳做法是从数据库加载第一个选择框,并使用专用提交按钮添加子选项 - 可以是“显示状态”或在你的情况下类似。

第一次呈现表单 时,请勿获取所有可能的子选择。如果您显示类似国家/地区的内容,这很容易导致繁重的数据库查询。国家 - >以城市为例......但是国家 - >所有国家的国家已经太多了。

如果使用“显示状态”按钮提交表单,则将相关的子选择与“显示城市”按钮一起添加到表单中,或者如果没有其他子选项将被加载...最后“保存” “按钮。

这样,没有JavaScript的用户可以使用双选,而不会涉及最初不需要的子选择查询。用JS隐藏第二个选择是最佳实践。

然后通过JavaScript

渐进式增强 AJAX - 加载,即 JSON 国家/地区的状态列表,删除“显示状态” “按钮,使用 JS模板引擎渲染数据,如把手或小胡子,并添加”保存“按钮。

这样您就不必向客户端浏览器发送过多的重复数据(选项,选项,选项......)。

最后一步是缓存客户端和服务器端以加快加载时间 - 甚至可能涉及某种后台预加载,即客户端首选语言的前5个选项。