我目前正在将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
这对我来说效果很好。