【问题标题】:Alter input of form before it is submitted在提交之前更改表单的输入
【发布时间】:2013-06-10 12:09:11
【问题描述】:

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

在 /search/node 使用 Drupal 自己的搜索功能,可以通过“高级搜索”选项选择要搜索的语言,并且效果很好。但是,我不想公开这些语言选择框,我只想让它只自动搜索当前语言。

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

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

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

有谁知道是否可以通过 Drupal 表单相关的更改功能之一来获取输入文本并在 drupal 对其进行最终处理之前对其进行更改?

【问题讨论】:

    标签: forms drupal drupal-7


    【解决方案1】:

    为了具体回答您的问题,在使用“hook_form_alter”时,您有一个名为“$form_state”的引用变量。这会将值存储在表单中,任何更改都会被进一步传递。

    还有,

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

    【讨论】:

      猜你喜欢
      • 2018-04-28
      • 2015-08-02
      • 1970-01-01
      • 1970-01-01
      • 2015-10-12
      • 2018-09-04
      • 2023-03-26
      • 2011-01-19
      • 2017-04-29
      相关资源
      最近更新 更多