我使用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
答案 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));