使用模块文件中定义的PHP类在COK_INSTALL()的执行内部 -- hooks 领域 drupal 相关 的问题

Using a PHP class defined in the module file inside the implementation of hook_install()


1
vote

问题

中文

如果实现 hook_install()my modure需要在模块文件中定义的类,如果代码首先使用 drupal_load()?

我会认为当调用钩子时,尚未更新钩子注册表,以包含对我模块使用的模块中定义的PHP类的任何引用,并在.info文件中引用。我看着Drupal代码,但我找不到我认为drupal的任何证据。

如果我使用 drupal_load() 或者在尝试在模块文件中定义的PHP类的实例时会自动加载文件?它与 hook_update_N()

不同
英文原文

If the implementation of hook_install() of my module needs to use a class defined in the module file, should the code first load the module file with drupal_load()?

I would think that when the hook is invoked, the Drupal registry has not been yet updated to contain any reference to the PHP classes defined in the modules used by my module, and which are referred in the .info file. I looked at Drupal code, but I could not find any proof for what I think Drupal does.

Should I use drupal_load() or the file will be loaded automatically when I try to create an instance of the PHP class defined in the module file? Is it different with hook_update_N()?

  

回答列表

3
 
vote
vote
最佳答案
 

不需要,它已经加载了。检查 http://api.drupal.org/api /drupal/includes--module.inc/function/module_enable/7

  if ($existing->status == 0) {   // Load the module's code.   drupal_load('module', $module);   module_load_install($module);   // … }   
 

No need, it's already loaded. Check http://api.drupal.org/api/drupal/includes--module.inc/function/module_enable/7

if ($existing->status == 0) {   // Load the module's code.   drupal_load('module', $module);   module_load_install($module);   // xe2x80xa6 } 
 
 
1
 
vote

或者您可以:

  require_once dirname(__FILE__) . '/mymodule.module';   

在您的.INAST文件中的任何位置(上面更好)。

这不是"Drupal的方式" ,但它将无缝地工作。

正确的方法是:

  drupal_load('module', 'mymodule');   

在所有hook_install()和hook_update_n()中需要类的实现。 但我不确定它将在安装时工作。

 

Or you can just:

require_once dirname(__FILE__) . '/mymodule.module'; 

Anywhere inside of your .install file (top is better).

This is not the "Drupal way" but it will work seamlessly whatever happens.

The proper method would be:

drupal_load('module', 'mymodule'); 

Inside all hook_install() and hook_update_N() implementations that needs the class. But I'm not sure it will work at install time.

 
 

相关问题

3  从MENU_CALLBACK加载自定义模板  ( Load custom template from menu callback ) 
这是我目前的情况:我有一个外部认证平台,通过iframe加载drupal。当用户经过身份验证时,外部应用程序将用户重定向到我设置的Drupal端点: function mymodule_menu() { $items['mymodule/oauth'] = array( 'title' ...

5  如何使用hook_menu()设置菜单项的父级?  ( How to set the parent of menu items creating using hook menu ) 
我需要基于数据库的值动态创建一系列菜单项。 这是我 hook_menu() 函数的一个例子;在此代码段中,我删除了DB查询并刚添加了一个数组来证明概念: function MYMODULE_menu() { $years = array(2011, 2010, 2009); foreach ($year...

2  从主题添加到drupal.settings的最佳地点  ( Best place to add to drupal settings from a theme ) 
我正在为客户端处理一个主题,并贯穿于我想添加到 99887662 的实例,通过 drupal_add_js()来自主题。 在这种特殊情况下,它真的是从主题本身而不是模块钩子,因为设置与主题本身有关。 从 template_preprocess()或其一个亲戚,为时已晚,因为 $vars["scripts"] 已经构建...

0  如何将表单添加到块?  ( How do i add a form to the block ) 
我想为块添加一个配置表单。表单的样式如下: 一年(标签)输入文本框值为:10美元 两年输入文本框值 三年输入文本框 500个帐户输入文本框 1500帐户输入文本框 2500帐户输入文本框 图片:可以上传图像 我该怎么做?我应该写一个模块来获得它。 如何设计表...

0  hook_help()参数  ( Hook help argument ) 
我没有看到第二个参数 $arg 在函数中使用。 function hook_help($path, $arg) { // .... } 为什么要宣布它?它的使用是什么? ...

2  从主题template.php挂钩节点操作?  ( Hook into node operation from theme template php ) 
我在drupal admin(不是通过模块)中的Drupal 7中的新内容类型。我想做的是在插入和更新操作上添加钩子。如何在模块未创建的节点类型时完成? 这可以完全完成吗? ...

2  在Drupal 7中定制Hook_Theme()的主题覆盖  ( Theme overrides for custom hook theme in drupal 7 ) 
我有一个自定义d7模块,它定义了它是自己的 hook_theme() ,它定义了一些主题函数,它们定义了自己的模板,例如: function foo_theme($existing, $type, $theme, $path) { $items = array( 'post_foot' =...

2  cck是否加载在node_load()上的共享字段?  ( Are cck shared fields loaded on node load ) 
field_metatitle 是一个CCK字段,它在5种不同的内容类型中使用,这意味着它是"共享字段" 。当我做<代码> $node = node_load('123'); 时,我看到$ node-&gt; field_metatitle不存在。 ...

20  如何使用hook_views_query_alter()?  ( How do i use hook views query alter ) 
在 hook_views_query_alter() ,我创建了一个名为 9988877669 的文件,并将其放入一个名为 files[] = tests/module.test 0 的一个启用模块。我在 files[] = tests/module.test 1 中添加了以下代码。但它不起作用。 files[]...

4  如何更改视图查询以使用“或”?  ( How do i alter a view query to use or ) 
以下是将传递给视图的 998887661 对象的内容。 [哪里] =&gt;大批( [0] =&gt;大批( [条文] =&gt;大批( [0] =&gt; node.type('%s') [1] =&gt; node.status 0. [2] =&gt; nod...

1  如何使用hook_views_query_alter()添加SQL查询?  ( How do i add an sql query with hook views query alter ) 
我有以下SQL查询: db_query("SELECT content_id, COUNT(*) as count FROM {votingapi_vote} WHERE value_type = '%s' AND value = 1 GROUP BY content_i...

1  如何实现hook_finder_goto_alter()?  ( How do i implement hook finder goto alter ) 
我有点麻烦了我正在工作的模块。我正在尝试修改一个模块来重定向流量,但即使它启用它似乎没有任何操作。我过去的使用钩子有问题,我不确定我做错了什么。 我基本上使用Finder模块,这是重定向的代码: function test_finder_goto_alter(&$result, $finder) { /* R...

2  多个字段搜索查找器和结果排序  ( Multiple fields search with finder and results sorting ) 
我配置了一个视图,列出了数百个元素,如下所示: 名称,类型,结果,其他 现在,我需要搜索它,同时使用多种形式,以这种方式: 搜索元素n.1:[输入] 搜索元素N.2:[输入] 搜索元素N.3:[输入] 搜索元素N.4:[输入] 我试图使用"finder" 模块和自动完成字段来实现它。一切都适用,但结果按照视图的顺序...

7  什么是不同类型的钩子?  ( What are the different types of hooks ) 
在一个旧博客文章,Larry Garfield是指"注册表样式"挂钩和hook_nodeapi型挂钩。 在分解不同类型的钩子时,似乎没有任何文档。有大挂钩 这样的故障看起来像什么? ...

5  模块和性能  ( Modules and performance ) 
我知道禁用的模块不会影响性能。我也知道通常,您启用的模块数量将实现您网站的速度。 Drupal.org上的一个人表示您永远不会启用40多个模块。我发现这个奇怪的是因为我会假设一些模块比其他模块更加密集。 是它只是某种效果性能的模块数量,(因为挂钩始终被调用),或者它真的依赖于您在模块中所做的内容吗? ...

3  在模块中启用/禁用评论表单?  ( Enable disable comment form in a module ) 
我想通过我的自定义模块将给定节点的注释标志设置为1或2(要显示或隐藏评论表格),具体取决于某些条件。 我尝试过wood_node_view,但这种方法似乎不起作用: 函数custom_node_view($ node,$ view_mode,$ langcode){ $ node-&gt;评论= 1; } 即...

2  如何在位置模块中更改国家下拉列表?  ( How to alter country dropdown in location module ) 
我一直在研究一种方法来限制可用的国家在贡献的位置模块附带的下拉。我认为 hook_form_alter() 是处理某些国家的方法,但是从手中启动 hook_form_alter() 片段不是我有能力实现的东西。经过大量谷歌曲,我无法找到代码片段让我开始。 我现在正在工作的项目只允许来自美国和加拿大的注册,所以我希望将...

7  将URL参数传递给菜单回调  ( Passing in url parameters to menu callbacks ) 
i实现了 hook_menu() 以创建一个名为"用户登录" 的新路径。页面回调函数接收像 $_GET['parameter'] 的URL参数;但是,当我转到 http://site.com/user-login?//site.com/user-login ?parameter=test ,我得到了一个404错误。...

1  安装模块时,我的管理菜单消失了  ( My administration menu dissapears when installing a module ) 
我创建了一个模块,使用以下代码实现 hook_menu() : function mypbm_menu() { $items['pbg'] = array( 'title' => 'Theming example', 'description' => 'Examples of implemen...

0  创建帐户时将额外的元素传递给$编辑数组  ( Passing an extra element to edit array when creating an account ) 
我通过实现hook_user 在我的自定义模块中添加了额外的用户注册验证ritera if ('validate' == $op && 'user_register' == $edit['form_id'] && 'account' == $category && !$edit['remote_create_us...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.