Prestashop - 从 smarty tpl 调用静态方法

Prestashop - Call static method from smarty tpl

我正在使用 prestashop 1.7,我在覆盖 / classes 中有一个名为 Cart.php 的文件,它具有与此类似的功能,其目的是 return 一个对象数组,代码可以是这样的

<?php

class 购物车扩展了 CartCore {

public static function getADXFromProducts($id){


    $adxProducts=array();
    return $adxProducts;
}

}

我在 smarty 模板 "Tpl" 中遇到问题,我尝试以这种方式调用静态方法。

通过屏幕我没有收到任何错误,但是如果我在上面的覆盖文件中激活 xdebug,我没有看到它进入方法。

  {assign var=bookProducts value={Cart::getADXFromProducts($cart.id)}}

谢谢

首先,在管理面板中的 Prestashop 中激活调试模式 高级参数 -> 性能 -> 调试模式。如果你有它,它会帮助你看到任何问题

其次,确保将覆盖文件放在正确的路径中,它必须是 'override/classes/Cart.php'

第三次,删除一个文件app/cache/dev/class_index.php会自动生成,所有路由都会重新生成

最后,如果你想得到一个数组作为响应,你需要这样定义你的变量

{assign var='bookProducts' value=Cart::getADXFromProducts($cart.id)}

您的方式 {assign var=bookProducts value={Cart::getADXFromProducts($cart.id)}} 仅适用于字符串或数字

静态函数可以直接在Smarty文件中调用例如:

{Cart::getADXFromProducts($cart.id)}

但不建议这样做,你应该调用PHP class文件中的函数,然后使用Smarty中的值。

$this->context->smarty->assign('bookProducts', Cart::getADXFromProducts($cart.id));