无法添加新的Smarty插件

时间:2014-07-20 10:18:41

标签: php smarty

目录结构:

smarty
------plugins
------myplugins
---------------function.myfnc.php

在文件function.myfnc.php中:

function smarty_function_myfnc($params, &$smarty) {
   ///code here
}

添加插件:

$smary->addPluginsDir(/path/to/myplugins);

但是,当我在文件display.tpl中调用时:

{myfnc p="value"}

这是错误:

Call to undefined function smarty_function_myfnc()
有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

可能问题是你的插件目录的路径。您应该在myplugins之前添加与用于要求Smarty.class.php相同的路径。

例如我有代码:

<?php

require 'smarty/Smarty.class.php';

$smarty = new Smarty;

$smarty->setTemplateDir('templates');

$smarty->addPluginsDir('smarty/myplugins');

var_dump($smarty->getPluginsDir());


echo $smarty->fetch('temp.tpl');

一开始我有require 'smarty/Smarty.class.php'; - 我Smarty.class.php的路径是smarty所以当我的文件夹myplugins位于smarty文件夹内时我需要使用smarty/myplugins而不仅仅是myplugins

然后我有templates/temp.tpl个文件包含内容:

{myfnc p="value"}

和文件smarty/myplugins/function.myfnc.php包含内容:

<?php

function smarty_function_myfnc($params, Smarty_Internal_Template $template)
{                           

    return strtoupper($params['p']);
}
?>

模板的输出为VALUE,大写字母在我的函数中定义。

所以你看它没有问题。