带有编码点火器和 Ci-Smarty “不可调用”错误的智能输出滤波器


Smarty output filters with Codeigniter and Ci-Smarty "not callable" error

我目前正在将codeigniter 2与ci-Smarty一起使用。只是一直在尝试添加一个聪明的输出滤波器,但没有太多运气。好像找不到功能还是什么?

我正在使用一个插件作为输出过滤器函数,并具有以下代码:

位置:/图书馆/聪明.php

// Set email output filter
$this->loadFilter('output', 'protect_email');

位置:/third_party/聪明/插件/function.protect_email.php

function smarty_function_protect_email($tpl_output, Smarty_Internal_Template $template)
{
    $tpl_output =
       preg_replace('!('S+)@([a-zA-Z0-9'.'-]+'.([a-zA-Z]{2,3}|[0-9]{1,3}))!',
                    '$1%40$2', $tpl_output);
    return $tpl_output;
}

上面似乎抛出了以下聪明的错误:

致命错误:未捕获的异常"智能异常"带有消息 "输出过滤器"protect_email"不可调用" /home/something/public_html/application/third_party/Smarty/sysplugins/smarty_internal_templatebase.php:717 堆栈跟踪:#0 /home/something/public_html/application/libraries/Smarty.php(46): Smarty_Internal_TemplateBase->loadFilter('output', 'protect_email') #1 /home/something/public_html/system/core/Loader.php(1095): CI_Smarty->__construct(阵列) #2 /home/something/public_html/system/core/Loader.php(975): CI_Loader->_ci_init_class("Smarty", ", NULL, NULL) #3 /home/something/public_html/system/core/Loader.php(216): CI_Loader->_ci_load_class('smarty', NULL, NULL) #4 /home/something/public_html/application/libraries/MY_Parser.php(29): CI_Loader->图书馆('聪明') #5 /home/something/public_html/system/core/Loader.php(1099): MY_Parser->__construct() #6 /home/something/public_html/system/core/Loader.php(938): CI_Loader->_ci_init_class('Parser', 'MY_', NULL, NULL) #7 /home/something/public_html/system/core/Loader.php(216): CI_Loa in /home/something/public_html/application/third_party/Smarty/sysplugins/smarty_internal_templatebase.php 在 717 行

对不起,这么久了!只是认为看到整个错误可能会有所帮助。

非常感谢您的阅读,希望有人可以提供帮助。

-

->编辑也只是尝试使用以下方法显式设置插件目录位置:

$this->setPluginsDir(config_item('plugin_directory'));

回显出的位置是正确的,但仍然得到同样的问题:(

好吧,

这是一个愚蠢的错误。

对于有相同问题的任何其他人,我只是在浏览并意识到该插件不应被称为常规功能。例如,它应该被称为:

outputfilter.protect_email.php

也对函数名称进行相同的修改,所以在我的情况下应该调用它:

smarty_outputfilter_protect_email

这对我来说效果很好。