目录结构:
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()
有人可以帮帮我吗?
答案 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
,大写字母在我的函数中定义。
所以你看它没有问题。