Drupal - 在渲染之前改变webform字段

时间:2014-07-31 03:44:11

标签: drupal drupal-7 drupal-webform

我对Drupal非常陌生(Drupal 7)。

我陷入了网络形式的改变步骤。

所以,我创建了一个内容类型 - 新闻

新闻内容类型具有用于引用网络表单的节点引用字段。

创建一个视图(由于各种原因)列出新闻项目。

现在,当显示新闻项目详细信息页面时,我想更新几个webform字段。例如,webform主题的字段需要预先填充新闻项目标题。

我知道有hook_form_alter个钩子来更新网络表单,但我无法使用该挂钩,因为我无法访问其他新闻内容类型字段。

我尝试了template_preprocess_node钩子,但看起来像是在渲染了webform之后调用,因为字段值没有更新。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

我知道这是一篇旧帖子,但对于任何寻找答案的人来说都是如此。

  1. 不需要引用webform,它可以附加到您的内容类型(在本例中为News)。虽然看起来@ user1425041正在创建某种反馈形式,但可能想要为多个节点重用一个表单。
  2. 由于您希望从“新闻”节点更改Web地址,您可以通过menu_get_object()访问整个节点和内容类型中的所有字段,但是您无需通过{重新加载节点{1}} node_load将为您提供完整的节点对象。
  3. 假设您拥有menu_get_object(),则可以使用form_idhook_form_alter来更改表单的内容。
  4. 可以在此处找到更多信息:https://www.drupal.org/node/1558246

答案 1 :(得分:0)

项目详细信息页面是否为节点页面,如果是这样,您可以使用menu_get_object();获取nid然后使用node_load获取所需的数据,然后使用hook_form_alter将其插入到webform中。

如果它不是节点页面,您可以使用devel或hook_page_alter查找页面中节点的引用,然后使用它从节点加载数据并插入到表单中。