我在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);
}
答案 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模块。
阿迪