首页 > 解决方案 > 为什么 smarty registerPlugin() 在 v3.1.30 左右停止 workgin?

问题描述

我从 smarty 迁移v3.1.29v3.1.33并且我注册的插件停止工作。为什么?

我使用了这个语法:

$this -> registerPlugin ( "function", "tpl_func", "php_func" );

该行为仅在php 7.0. 有了php 7.3.14它仍然可以正常工作。

标签: phpsmarty-plugins

解决方案


问题不在于你在哪里调用函数,而是你在哪里定义它。

在较旧版本的 smarty 中,以下语法确实有效:

function php_func($params, &$smarty) {
    return "blah";
}

在较新的版本中,这是不正确的。您应该使用这个(&从第二个参数中删除):

function php_func($params, $smarty) {
    return "blah";
}

smartyblock和 smartyfunction也是如此。


推荐阅读