2011-09-12 4 views
1

drupal :: order complete hook and upgrade user permission/rolesなどのような質問が表示されましたが、私の注文は決して完了することはなく、payment_receivedのみとなります。現時点では、uidは0です.UIDがまだ0であることをステータスとして「Customer completed checkout」の下に条件付きアクションを追加すると、まだ動作しません。ubercartでは、ユーザーが作成され、注文に関連付けられた後に

ユーザーがチェックアウトを正常に完了して作成された後、私はuidとorderオブジェクトを取得しますか?

答えて

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

おかげで、私は、ルックアップするための電子メールアドレスを使用して考えましたもちろん、ユーザーはこの時点で作成されておらず、後でフックを公開する必要があります。私は、挿入操作でhook_userを使用して、電子メールアドレスに0のオーダーがあり、特定の期限内に作成されたかどうかを確認することができたと思いますか?これは私にとって面倒なようですが、よりよい解決策はありませんか? –

+0

申し訳ありません、私は 'hook_order()'ではなく 'hook_user()'を意味していました。これは匿名のチェックアウトのシナリオではありませんか?もしそれが 'uid'であれば、ユーザーは一度も作成されていないので、常にゼロになります。そうでなければ、 'update '引数を指定して' hook_order() 'を呼び出すまでには、ユーザは必ず作成されなければなりません。そうでない場合は、 'global $ user'を使って現在ログインしているユーザを取得し、' uid'を得ることができます。 – Clive

+0

Thanks Clive、これは意味があります。上記のあなたのコードは常にグローバル$ユーザーを使用するようですが、引数の内容を含むすべてのシナリオに対して電子メールを送信するようセットアップしました。私たちは、ユーザーが成功した注文で作成されるように設定しています。これは遅すぎます。しかし、私があなたのコードから見ることができるものから、ログインしていないし、作成されていないので、今度はグローバル$ユーザーも0になります。 –

関連する問題