在 Hookpayment 功能 PRESTASHOP 中禁用支付模块

Disabling payment module in Hookpayment function PRESTASHOP

我需要隐藏 C.O.D。 select 编辑了特定运营商(ID 为 8)时的支付模块。我决定使用 hookpayment 函数来检查运营商 ID,如果 ID 匹配,则 return false。我的 hookpayment 函数如下所示

public function hookPayment($params)
    {
        if (!$this->active)
            return ;

        global $smarty;

        // Check if cart has product download
        if ($this->hasProductDownload($params['cart']))
            return false;

        if ($cart->id_carrier == 8)
            return false;

        $smarty->assign(array(
            'this_path' => $this->_path, //keep for retro compat
            'this_path_cod' => $this->_path,
            'this_path_ssl' => Tools::getShopDomainSsl(true, true).__PS_BASE_URI__.'modules/'.$this->name.'/'
        ));
        return $this->display(__FILE__, 'payment.tpl');
    }

问题是,C.O.D。即使我 select 我的 ID 为 8 的运营商,方法仍然存在。你能帮我调试或找到解决方案吗?谢谢

$cart对象不存在,所以$cart->id_carrier永远不会等于8。需要用(int)$params['cart']代替$cart .