【发布时间】:2010-03-09 09:45:55
【问题描述】:
我在 Ubuntu 9.10 上使用带有 Propel ORM 的 Symfony 1.3.2。
我开发了一个表单,该表单使用 AJAX 动态填充选定国家/地区的城市的选定小部件。
在保存表单上输入的数据之前,我会验证表单。如果验证失败,则将表单返回给用户进行更正。但是,由于国家列表是动态生成的,因此提交的用于更正的表单没有选择有效的城市(它是空的,因为国家小部件尚未更改)。
这对用户来说很不方便,因为这意味着他们必须选择另一个国家(因此会触发更改事件),然后更改回他们选择的原始国家,然后最终选择他们最后选择的城市。
所有这些都是强加给用户的,因为另一个(可能不相关的)字段没有生效。
我尝试了 $form->getValue('widget_name'),在 $form->bind() 之后立即调用,但似乎(事实上,IIRC,如果表单验证失败,所有值都重置为 null) -所以这不起作用。
我目前正在尝试一种令人讨厌的 hack,它涉及使用通过 $_POST 直接访问输入(即被污染的)数据,并将它们设置为 flash 变量 - 但我觉得这是一种非常讨厌的 hack)
我正在尝试做的是一个常见的用例场景 - 有没有比使用 $_POST 等更好的方法来做到这一点?
【问题讨论】:
标签: php forms symfony1 symfony-forms