如何在自定义模块中欺骗Drupal 6中的表单值而不会抛出“非法选择”错误

时间:2011-01-20 14:41:04

标签: php jquery drupal-6 drupal-views drupal-modules

我有一个网站,它使用带有公开过滤器的视图和Finder模块来搜索作业。其中一个标准是工资范围,它以英镑显示在一个带有4个选项的选择框中。但是,客户要求提供一个允许用户显示不同货币的选项。

我创建了一个模块,允许用户选择不同的货币,然后设置包含货币值的会话变量。当用户查看包含Finder搜索表单或Views暴露过滤器的页面时,Drupal会添加一些JQuery,它会根据会话变量的值更改选择框的可见值。但是,它不会更改选择选项的实际值 - 仅限用户可以看到的值。

不幸的是,这种方法抛出了“已经检测到非法选择请联系网站管理员”的错误,显然是因为发布的表单数组与Drupal存储的表单数组不匹配。所以问题是,如何才能阻止此错误发生?我想在提交之前由JQuery重置表单值,虽然我不确定如何更改用户单击提交按钮和实际提交的表单之间的值。另一个选择可能是hook_form_alter来更改表单值,但我不确定这是否也可以。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

对于任何感兴趣的人,我创建了一个使用hook_form_alter的新模块。钩子为货币添加了一个额外的按钮,并在提交时设置包含货币信息的会话变量。当我的模块读取会话时,它会根据会话值改变实际的工资范围字段。