hook_order

函数hook_order()位于uc_order.module模块中:

<?php
  hook_order($op, &$arg1, $arg2)
?>

 

描述:

在Übercart中,一个订单代表着一个单独的交易。订单是在结算过程中创建的,此时,它们在数据库中的状态为在结帐。当客户完成结算时,订单的状态也会随着进行更新,已反映交易的进行状况。一旦订单创建以后,甚至在订单创建的过程中,其它的模块都可以向订单中添加额外的信息。每当对订单进行某项操作时,都会出发钩子hook_order(),从而让你的模块知道当前发生了什么,而你的模块根据当前情况,进行一些相应的处理。

参数:

·                                 $op -当前进行的动作

·                                 &$arg1 -这个是订单对象,或者指向订单的引用,下面有进一步的说明。

·                                 $arg2 -这个变量将在下面的表格中说明

$op

用途

new

当一个订单创建时调用。$arg1 是对新订单对象的引用,所以模块可以在订单的创建时期添加或者修改订单。

save

当订单对象被保存时,这个钩子将触发这个操作,以让其它模块保存相应的信息。$arg1为订单对象的引用

load

当订单加载时,在订单和产品数据从数据库中加载以后,调用。$arg1为订单对象的引用,所以其它模块可以在订单对象加载时对其进行修改。

submit

当销售正在完成时,并且客户点击了结算页面的提交订单按钮,这个钩子将触发这个操作。这给了其它模块一个机会,来决定订单是否允许被提交。一个示例是,当订单提交时,信用卡模块试图处理支付,如果支付失败的话,将返回一个失败信息。

为了阻止订单提交的通过,你必须返回一个包含错误信息的数组,其格式如下所示:

<?php
  return array(array('pass' => FALSE, 'message' => t('We were unable to process your credit card.')));
?>

can_update

在订单的状态改变以前调用,从而确定订单是否可被更新。$arg1是订单对象,带有旧的订单状态ID($arg1->order_status),而$arg2就是新的订单状态ID。如果由于某些原因,可以返回FALSE来停止订单的状态更新。

update

当订单状态更新时调用。$arg1是订单对象,带有旧的订单状态ID($arg1->order_status),而$arg2就是新的订单状态ID。

can_delete

在订单被删除以前调用,以确认当前订单可被删除。返回FALSE可以阻止删除的发生。(例如,当订单已经受到付款时,支付模块默认返回FALSE)

delete

当订单被删除时,而其它的订单相关信息还没有被从数据库中删除以前调用。$arg1代表着订单对象,使用它你的模块可以删除与之相关的信息。

total

当产品的总计添加以后,计算订单的总计时调用。$arg1为订单对象。期望能够返回一个值(正值或者负值),来修改订单的总计。

返回值:

没有返回值。

 

示例:

<?php
function uc_payment_order($op, &$arg1, $arg2) {
  switch ($op) {
    case 'save':
      // Do something to save payment info!
      break;
  }
}
?>

 

Think in Drupal

论坛:

Drupal版本: