Drupal 6 drupal 6和ubercart之间奇怪的$user变量混淆
我已经设置了一个hook alter,它向webform提交链添加了一个提交函数。在该函数中,我添加了一些其他处理:Drupal 6 drupal 6和ubercart之间奇怪的$user变量混淆,drupal-6,Drupal 6,我已经设置了一个hook alter,它向webform提交链添加了一个提交函数。在该函数中,我添加了一些其他处理: function webform_checkout_form_alter(&$form, &$form_state, $form_id) { $form['#submit'][] = 'webformSubmitAlteration'; } function webformSubmitAlteration(&$form, &$form
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>');
}
然后,我通过checkout处理购物车,这将触发一个运行一些定制php的ubercart条件操作。基本上,当这个付款完成被捕获时,我想使用最后的提交值将提交的表单从草稿切换到完成,这样我的用户就可以知道哪些应用程序已经完成并清理完毕
在这段代码中,我添加了:
user is : stdClass Object
(
[uid] => 1
[name] => paul.dambra
[last_submission] => 47
)
我知道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>');
user is : stdClass Object
(
[uid] => 1
[name] => paul.dambra
[last_submission] => 47
)
global $user;
if ($user) {
$array = array('last_submission' => $sids[1]);
user_save($user, $array);
}