2010-04-17 58 views
3

我讀過drupal文檔,應該爲登錄操作調用hook_user。爲了測試這個,我在模塊鉤子實現的頂部添加了一個對drupal_set_message的調用,並且我收到的唯一消息是使用'load'作爲$ op的調用。hook_user不會被稱爲「登錄」操作

我已經證實,drupal_set_message可以多次調用,它不會刪除以前的消息,所以我相信hook_user只被調用一次。

任何理由爲什麼hook_user不被用「登陸」當我登錄的操作調用?

Drupal的版本是6,我的模塊被稱爲「favequest_favorites」及其實施hook_user的(用於測試目的)是:

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

哪個版本?你能發佈你的代碼嗎? – flamingLogos 2010-04-17 02:32:14

回答

1

你必須用「$ caterogy」變量的拼寫錯字,但是這不應該的問題,因爲你沒有在這個測試中使用它:

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

使用你的代碼,我得到的登錄四條消息:

  • 負載
  • 負載
  • 登錄
  • 負載

怎麼樣,如果你編輯的用戶帳戶?您是否在「我的帳戶」頁面上顯示「查看」$ op,並在編輯時顯示「表格」$ op?

有趣的是我不明白的「退出」 $運算,當我退出 - 我認爲有事情做一個重定向,一旦我不再驗證。

+0

感謝您花時間嘗試解決我的問題。關於非註銷消息的+1 – 2010-04-17 03:49:34

+0

- 它可能與匿名緩存有關。 – Adi 2010-07-11 15:58:15

2

由於經常是我跟蹤下來到模塊的互動情況。

如果您計劃在模塊中使用hook_user,請勿使用「登錄目標」模塊模塊。

它撈出所有其它模塊可以有機會執行之前。

0

看看你是否有一個drupal_goto你登錄後。 http://drupal.org/node/228688

關於drupal_set_message - 消息被保存到會話中。當你登錄時會話重置,這可能是你沒有看到它們的原因。爲了快速調試,我推薦使用帶有dd功能或系統日誌消息的devel模塊。

Adi

+0

儘管這個鏈接可能回答這個問題,但最好在這裏包含答案的重要部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – PaulG 2012-11-16 15:11:08

+0

你說得對。其實我不記得回答這個問題,但我會編輯我的答案。 – Adi 2012-11-18 17:00:47