0

我正在尝试使用 Drupal 商务模块在 Drupal 7 中的结帐流程之后执行一些业务逻辑。我已经阅读了我可以使用钩子 hook_commerce_checkout_complete 但它没有被调用的文档

function api_manager_commerce_checkout_complete($order) {
    $ow = entity_metadata_wrapper('commerce_order', $order);

    foreach ($ow->commerce_line_items as $line_item) {
     $sku = $line_item->commerce_product->sku->value();

     $record = array(
      'uid' => get_user_id(),
      'sku' => $sku,
      'token' => uniqid(),
     );

     drupal_write_record('api_manager_product_user', $record);
    }

}

供您参考,我已在结帐配置中禁用“付款”和“账单信息”

4

1 回答 1

3

每当在 Drupal 中实现新的钩子时,您都需要清除缓存(类)。只有这样,那个特定的钩子才会在被调用时可用并被触发。

如果您使用的是 devel 模块,您可以使用module_implements函数检查您的钩子是否被 Drupal 系统识别。开发模块在http://www.mysite.com/devel/php为您提供了一个方便的工具来尝试这些片段。

dpm(module_implements('commerce_checkout_complete'));

如果您的模块名称未列为上述函数的输出,则表示您的钩子无法识别。如前所述,在这种情况下请清除您的缓存。

于 2012-10-20T13:00:59.187 回答