hook_user没有被调用'login'操作

时间:2010-04-17 01:32:49

标签: drupal hook

我在drupal文档中读到应该为登录操作调用hook_user。为了测试这个,我在模块钩子实现的顶部添加了对drupal_set_message的调用,我收到的唯一消息是使用'load'作为$ op的调用。

我已经确认drupal_set_message可以被多次调用,并且它不会删除之前的消息,所以我确信hook_user只被调用一次。

为什么在我登录时没有使用'login'作为操作调用hook_user的原因是什么?

Drupal版本是6,我的模块名为“favequest_favorites”,它的hook_user实现(用于测试目的)是:

function favequest_favorites_user($op, &$edit, &$user, $caterogy=NULL) {
  drupal_set_message($op);
}

3 个答案:

答案 0 :(得分:2)

通常情况下,我已将此跟踪到模块的交互。

如果您打算在模块中使用hook_user,请不要使用“登录目的地”模块。

在所有其他模块都有机会执行之前,它会退出。

答案 1 :(得分:1)

你有一个拼写为“$ caterogy”变量的拼写错误,但这并不重要,因为你没有在这个测试中使用它:

function favequest_favorites_user($op, &$edit, &$user, $caterogy=NULL) {

使用您的代码,我在登录时收到四条消息:

  • 负载
  • 负载
  • 登录
  • 负载

如果您修改用户帐户怎么样?您是否在“我的帐户”页面上获得“查看”$ op,在编辑时获得“表单”$ op?

有趣的是,当我退出时,我没有得到“注销”$ op - 我认为这与重定向有关,一旦我不再进行身份验证。

答案 2 :(得分:0)

登录后查看您是否有drupal_goto。 http://drupal.org/node/228688

关于drupal_set_message - 消息将保存到会话中。当您登录时会重置会话,这可能是您没有看到它们的原因。为了快速调试,我建议使用带有dd功能或系统日志消息的devel模块。

阿迪