首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >变量($product.id_product)未传递给函数:( (Prestahop)

问变量($product.id_product)未传递给函数:( (Prestahop)
EN

Stack Overflow用户
提问于 2011-05-01 21:01:18
回答 2查看 856关注 0票数 0

是在product-list.php中调用的函数。

代码语言:javascript
复制
{mycat id_product_my=$product.id_product}

在此表单中,在上面写一行,variable($product.id_product)不会传递给函数:

代码语言:javascript
复制
{$product.id_product}

以id形式返回正确的结果。

代码语言:javascript
复制
{mycat id_product_my=15}

返回正确的结果,作为id为(15)的产品类别。

怎么了?

php函数:

代码语言:javascript
复制
function smarty_compiler_mycat($params, &$smarty) {

    $id_product_my = $params[‘id_product_my’];

    $ret = “”;

    if ($row = Db::getInstance(PS_USE_SQL_SLAVE)->ExecuteS(’
        SELECT cl.`name` FROM `’.DB_PREFIX.‘category_lang` cl 
        LEFT JOIN `’.DB_PREFIX.‘category_product` cp ON cl.`id_category` = cp.`id_category` 
        WHERE cp.`id_product` = ‘.(int)$id_product_my) )
            foreach ($row as $val) {
                $ret .= $val[‘name’].” “;
            }

    return $ret;
}
EN

回答 2

Stack Overflow用户

发布于 2011-05-01 21:17:13

我不知道我是否明白纠正你的问题!

如果你想调用tpl文件中的一个函数,你必须像这样调用:

代码语言:javascript
复制
{parameter1|functionName:parameter2:parameter3}
票数 0
EN

Stack Overflow用户

发布于 2011-05-01 21:17:18

为什么它是一个编译器函数?只需将其设置为常规运行时函数即可。将函数名改为smarty_function_mycat,保持参数不变,将文件名改为function.mycat.php。

作为测试/调试的一个问题,您可以在函数内执行var_dump($params),以查看您传递的$product.id_product中实际包含的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5848502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档