从tpl文件调用smarty插件函数时出错

时间:2017-04-17 10:25:52

标签: php yii2 smarty

使用以下代码

创建了一个简单的智能插件
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * File:     function.assignmenu.php
 * Type:     function
 * Name:     assign
 * Purpose:  assign a value to a template variable
 * -------------------------------------------------------------
 */
functionality-to-smarty-w-plugins/

function smarty_function_assignmenu(Smarty_Internal_Template $smarty)
{
    //$template->assign($params['var'], $params['value']);
    $smarty->assign('test', '123');
}

此函数从模板文件调用为 {} assignmenu {测试}

访问该页面时,将返回以下错误 传递给smarty_function_assignmenu()的参数1必须是Smarty_Internal_Template的实例,给定数组,在第31行的/var/www/myproject/runtime/Smarty/compile/cda404646b2153274a9e77f736531c5dc7e6f91c_0.file.sample.tpl.php中调用并定义

我在yii2上使用smarty 3。任何帮助表示赞赏

1 个答案:

答案 0 :(得分:0)

Smarty插件函数期望数组作为第一个参数。所以定义应该是

function smarty_function_assignmenu($paramArray,Smarty_Internal_Template $smarty)
{

    $smarty->assign('test', '123');
}

即使没有要传递的参数,函数定义也应该包含一个数组作为第一个参数。