2011-01-20 42 views
0

我有一个网站使用带有暴露过滤器和Finder模块的View来搜索作业。其中一个标准是工资范围,在英国英镑中有4个选项的选择框中显示。但是,客户已经要求允许用户显示不同货币的选项。如何在自定义模块中伪造Drupal 6中的表单值而不抛出“非法选项”错误

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

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

任何想法?

回答

0

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

相关问题