Prestashop - 从smarty tpl调用静态方法

时间:2018-04-11 10:46:38

标签: prestashop prestashop-1.7

我使用prestashop 1.7并且我在override / classes中有一个名为Cart.php的文件,它具有与此类似的功能,其目的是返回一个对象数组,代码可能是某些东西像这样

<?php

类Cart扩展了CartCore {

public static function getADXFromProducts($id){


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

}

我从smarty模板中得到了问题&#34; Tpl&#34;我尝试以这种方式调用静态方法。

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

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

Thanxs

2 个答案:

答案 0 :(得分:0)

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

第二,确保将覆盖文件放在正确的路径中,它必须&#39;覆盖/ classes / Cart.php&#39;

第三个,删除文件 app / cache / dev / class_index.php 它将自动生成并重新生成所有路径

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

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

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

答案 1 :(得分:0)

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

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

但不推荐这样做,你应该在PHP类文件中调用该函数,然后使用Smarty中的值。

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