首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >差异hook_form_alter()和hook_prepare()

差异hook_form_alter()和hook_prepare()
EN

Stack Overflow用户
提问于 2012-09-05 16:11:59
回答 1查看 250关注 0票数 0

我是Drupal的新手。

我遇到了两种预填充表单的方法,即hook_form_alter()hook_prepare()

我已经看过文档了,我相信这两种方法都可以达到我想要的效果。

我想知道这两个函数是用来做什么的?有没有专门为指定功能设计的?

据我所知,hook_form_alter()接受当前的表单状态,并对其执行操作。这是否意味着这个函数是用来改变实际表单本身的?比如更改某些字段,或者添加自定义字段等等?

另一方面,Hook_prepare()获取一个节点并在它填充添加/编辑表单之前对其执行操作。

假设我正在尝试预先填充一个表单。hook_prepare()是不是“正确”的方式呢?或者这真的无关紧要?如果我使用的是webform模块,而不是内容类型,该怎么办?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-05 16:38:30

这两个钩子是完全不同的,它们根本不做同样的事情。

每当使用drupal_get_form()构建表单时,都会调用hook_form_alter()。它允许模块更改元素或元数据(操作字段属性、添加AJAX、添加CSS属性等)。以结构化的方式与表单相关。任何实现钩子的模块都会调用钩子。

相反,hook_prepare()用于在将节点对象传递给实体表单进行添加/编辑之前对其进行操作。它只为定义正在准备的节点类型的模块调用。所以,除非你定义了一个自定义的“节点类型模块”,否则这个钩子将不会被调用。

简而言之,99%的时间你会使用hook_form_alter()hook_prepare()只有在一组非常特殊的情况下才会出现,如果你使用的是Webform模块,就不适用于你的情况。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12277148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档