You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PrestaShop8中如何在hookDisplayOrderPreview获取id_order

解决PrestaShop 8 hookDisplayOrderPreview无法获取id_order的问题

在PrestaShop 8中,hookDisplayOrderPreview钩子的$params参数并不直接提供id_order字段,而是传递了完整的Order实例对象。你之前的写法错误在于直接尝试获取不存在的键,导致$orderID为空。

正确的获取方式

从$params['order']对象中提取订单ID:

public function hookDisplayOrderPreview(array $params) {
    // 确保order对象存在,避免报错
    if (!isset($params['order']) || !$params['order'] instanceof Order) {
        return '';
    }

    $id_cart = $params['id_cart'];
    $orderID = (int)$params['order']->id;

    $this->context->smarty->assign([
        'order_ID' => $orderID,
        'cartID' => $id_cart
    ]);

    return $this->display(__FILE__, 'displayOrderPreview.tpl');
}

为什么之前的方法无效?

  • $params['id_order']:该键在PrestaShop 8的这个钩子参数里不存在,订单数据是以Order对象的形式传递的。
  • Tools::getValue('id_order'):这个方法用于获取HTTP请求的GET/POST参数,但订单预览的AJAX请求中,id_order并没有直接作为请求参数传递,而是通过后台上下文的Order实例传递到钩子中,所以无法通过这种方式获取。

调试建议

如果不确定参数结构,可以先在钩子中打印$params的内容,确认可用数据:

var_dump($params);
die;

内容的提问来源于stack exchange,提问作者ButcherFromHell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 07:26:35