gpt4 book ai didi

drupal - hook_form 用于同一模块定义的多种内容类型

转载 作者:行者123 更新时间:2023-12-01 02:56:36 25 4
gpt4 key购买 nike

一个新模块 'foo' 实现了 foo_node_info()可以定义一种或多种新的内容类型。

如果 foo_node_info()定义了两种内容类型,即内容类型'footypea'和内容类型'footypeb',如何实现hook_form() (“钩子(Hook)”的名称应该是什么?)配置每个节点的编辑表单?

drupal example ,新内容类型的名称与模块名称相同。在上面描述的示例中,模块定义了两种新的内容类型会发生什么?

实现的 hook_form() 函数是否应该采用以下形式: footypea_form() 和 footypeb_form() ? (这似乎不起作用)

或者您是否应该实现一个 foo_form() 函数并在其中创建并返回一个数组 $form ,其中包含元素 $form['footypea'] 和 $form['footypeb'] 依次是各个表单字段定义的数组?

最佳答案

在模块的 hook_node_info() 中,添加 'module'属性(见 http://api.drupal.org/api/function/hook_node_info/6)。

例如:

/**
* Implementation of hook_node_info().
*/
function foo_node_info() {
return array(
'footypea' => array(
'name' => t('Foo Type A'),
'description' => t('This is Foo Type A'),
'module' => 'footypea', //This will be used for hook_form()
),
'footypeb' => array(
'name' => t('Foo Type B'),
'description' => t('This is Foo Type B'),
'module' => 'footypeb', //This will be used for hook_form()
),
);
}

现在您可以为每种类型添加以下 hook_form() 实现(参见 http://api.drupal.org/api/function/hook_form/6 )。
/**
* Implementation of hook_form().
*/
function footypea_form(&$node, $form_state) {
// Define the form for Foo Type A
}

/**
* Implementation of hook_form().
*/
function footypeb_form(&$node, $form_state) {
// Define the form for Foo Type B
}

这里的技巧是 hook_node_info() 中每个元素的模块属性不必与实现 hook_node_info() 的模块相同.定义的每种类型都可以具有唯一的模块属性,用于实现特定于类型的钩子(Hook)。

关于drupal - hook_form 用于同一模块定义的多种内容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2775782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com