在提交之前更改表单的输入

时间:2013-06-10 12:09:11

标签: forms drupal drupal-7

我正在创建一个多语言Drupal网站并尝试实现一个搜索功能,该功能只显示用户正在查看网站的当前语言的结果。

在/ search / node使用Drupals自己的搜索功能,可以通过“高级搜索”选项选择要搜索的语言,并且它可以完美地工作。但是,我不想公开这些语言选择框,我只是希望它只能自动搜索当前语言。

这样做的最佳选择是什么?

我有一个解决方案,我创建了一个hook_form_alter函数,它将语言选择框中的#default_value设置为当前语言,然后用css隐藏整个“高级选项”。这似乎不是很正确。

我认为最干净的解决方案是挂钩Drupals表单处理过程并将ex“language:en”附加到输入文本中,但我无法使其工作。

有没有人知道是否有可能通过Drupal表单相关的alter函数之一获取输入文本并在drupal对其进行最终处理之前更改它?

1 个答案:

答案 0 :(得分:1)

要特别回答您的问题,在使用'hook_form_alter'时,您有一个名为'$ form_state'的引用变量。这将值存储在表单中,任何更改都将进一步传递。

此外,

我认为设置默认值并隐藏字段是一个很好的解决方案,只有,如果你隐藏它,你应该在服务器端做,同时改变表单。您要将默认值设置为的相同字段。像这样: $ fieldname ['#type'] ='隐藏'。