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
相关产品推荐
相关产品推荐

