2011-01-27 14 views
0

私は、Webフォームの送信チェーンに送信機能を追加するフックの変更を設定しました。いくつかの他の処理と並んでその機能では、私は追加します。また、機能

function webform_checkout_form_alter(&$form, &$form_state, $form_id) { 
    $form['#submit'][] = 'webformSubmitAlteration'; 
} 
function webformSubmitAlteration(&$form, &$form_state) { 
    global $user; 
    $user->last_submission = $sids[1]; 
    drupal_set_message('<pre> current user is: '. check_plain(print_r($user, TRUE)) .'</pre>'); 
} 

はubercartのチェックアウトページにリダイレクトします。

印刷$ユーザは、(明確にするために編集)として示しています

current user is: stdClass Object 
(
    [uid] => 1 
    [name] => paul.dambra 
    [last_submission] => 85 
) 

私はその後、いくつかのカスタムPHPを実行しますubercart条件付きアクションをトリガーチェックアウトを通じてのカートを処理します。基本的には、この支払いの完了がキャッチされたとき、last_submissionの値を使用して、提出されたフォームを下書きから完了するようにして、ユーザーがどのアプリケーションが完了してダストされるようにします。私が追加したそのコードで

:私は47から前にフォームを処理するlast_submission値があることを知っている

user is : stdClass Object 
(
    [uid] => 1 
    [name] => paul.dambra 
    [last_submission] => 47 
) 

を:

global $user; 
drupal_set_message('<pre> user is : '. check_plain(print_r($user, TRUE)) .'</pre>'); 
$sid = $user->last_submission; 
drupal_set_message('<pre> sid is : '. check_plain(print_r($sid, TRUE)) .'</pre>'); 

そして、我々は呼び出すdrupal_set_messageそれらの出力を見ると問題のですから、フォームを提出しても、直後にカートを処理したときにlast_submissionの正しい値を見ることができますが、古い値が表示されます。

私が間違っている可能性のあることを指摘するのはすごいでしょう!

答えて

0

私はに私のコードを編集する必要がありました:私は期待通りに動作するようになりまし

global $user; 
    if ($user) { 
     $array = array('last_submission' => $sids[1]); 
     user_save($user, $array);  
    } 

。希望は他の誰かを助ける...