2011-09-12 15 views
1

我已經看到類似的問題,例如drupal :: order complete hook and upgrade user permission/roles這對我很有用,除了我的訂單永遠不會完成,只有payment_received。此時uid爲0.如果我在「客戶完成結帳」下添加條件操作以將狀態標記爲完整,因爲uid仍然爲0,則它​​仍然不起作用。在ubercart中,如何在用戶創建並關聯訂單後獲取uid和order_id

所以我的問題是,怎麼可以在用戶成功完成結賬並創建後,我得到了uid和訂單對象?

回答

0

當的Ubercart創建它也記錄他們的用戶,這樣你就只需要做到這一點,以獲得UID:作爲類似的問題提到

global $user; 
$uid = $user->uid; 

它很可能是最好的hook_order服務()你鏈接到。

UPDATE

如果沒有你應該能夠像這樣定單有關uid

function MYMODULE_order($op, &$order, $arg2) { 
    if ($op == 'update' && $arg2 == 'payment_received') { 
    if ($order->uid) { 
     $uid = $order->uid; 
    } 
    else { 
     global $user; 
     $uid = $user->uid; 
    } 
    } 
} 
+0

謝謝,我想過使用順序查找的電子郵件地址uid,但當然這個用戶不是在這個時候創建​​的,而且之後需要顯示一個鉤子。我想我可以使用hook_user插入操作來檢查電子郵件地址是否有任何訂單是uid 0並在一定的時間限制內創建的?這對我來說似乎很混亂,有沒有更好的解決方案? –

+0

對不起,我的意思是在'hook_order()'而不是'hook_user()'。你確定這不是一個匿名結賬場景嗎?如果是「uid」,將永遠爲零,因爲沒有用戶創建過。如果沒有,到'hook_order()'用'update'參數被調用時,用戶一定要被創建,並且順序應該被填充。如果不是,使用'global $ user'會讓你獲得當前登錄的用戶,你應該能夠獲得'uid'這種方式 – Clive

+0

感謝Clive,這很有道理,雖然從我之前測試過的,看起來你上面的代碼總是使用全局的$用戶,我已經設置爲每個場景發送電子郵件與參數的內容。我們有這些設置,以便用戶在成功訂購時創建,這確實發生了,太遲了。然而,從我的代碼中可以看到,即使全球$用戶此時也是0,因爲他們沒有登錄或創建。 –

相關問題