【发布时间】:2011-05-26 18:52:07
【问题描述】:
我有一个带有下拉“选择”元素的表单,用户有时需要添加该元素。因此,我添加了一个打开模态框架表单的链接,创建了模态框架表单,并使其 _submit() 函数将新数据添加到包含选择元素选项的表中。然后它将新 ID 和名称“返回”给 Javascript 回调(模态框架的方式),JS 回调将新元素添加到下拉列表中,并使用 JQuery 使其成为浏览器中当前选择的元素。这一切都很好。
最后,用户提交原始表单,报错“检测到非法选择,请联系网站管理员。”
表单构建函数从数据库创建选项列表,(我检查过)确实包含新选项,所以我猜测 Drupal 正在使用表单的缓存版本,而不是在它执行之前重新构建它自动验证。如果你返回一页,然后向前,新添加的选项就在列表中。
我尝试添加:
global $GLOBALS;
$GLOBALS['conf']['cache'] = FALSE;
到构建有问题的页面的函数,但没有区别。
仅供参考:如果重要的话,这是多页表单的一部分。
我也想过尝试在“子”表单_submit()函数中将选项添加到“父”表单的缓存版本,但不知道如何获取“父”表单的form_build_id。此外,这似乎太过分了(尽管我可能错了)。
想法?
【问题讨论】:
标签: drupal drupal-6 drupal-modules drupal-fapi