Drupal hook_form_alter()在节点表单上
我只是花了最后几分钟来寻找解决方案,所以我认为其他人也许可以从中受益。
hook_form_alter()仅使用模块名称就可以在模块中调用该挂钩,这可以使您将系统中的所有表单作为目标。对于名为“我的模块”的模块,它将称为mymodule_form_alter()。
的力量hook_form_alter()挂钩的是,它阿洛斯可以专门针对一个模块内的特定名称的形式。一个很好的例子是,如果您想更改搜索表单以添加一个类,这是一项常见的任务。为此,创建一个模块,以便您可以将hook_form_alter()钩子添加到其中,然后通过以下方式构造函数名称:
modulename+'_form_'+formID+'_alter'
请注意,表单ID中的所有连字符均更改为下划线。如上面给出的示例所示,当专门查看搜索表单时,这将创建以下功能。
function mymodule_form_search_theme_form_alter(&$form, &$form_state) { $vars['#attributes'] = array('class' => 'search-form-thing'); }
hook_form_alter()通常,在使用时,请查看页面的HTML来查找相关表格的ID,以便从该ID构造函数名称。但是,当尝试查看节点编辑表单时,此格式略有不同,这导致我花了几分钟时间尝试弄清楚发生了什么。在这种情况下,表单的ID不是“node-form”,而是“contenttype-node-form”。因此,为了更改博客节点编辑表单,您将创建以下功能:
function mymodule_form_blog_node_form_alter(&$form, &$form_state) { $vars['#attributes'] = array('class' => 'node-edit-form'); }
这将允许您更改节点编辑表单。