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