1

我目前正在使用带有 ci-Smarty 的 codeigniter 2。只是试图添加一个聪明的输出过滤器,但运气不佳。好像找不到功能还是什么?

我使用插件作为输出过滤器功能,并具有以下代码:

位置: /libraries/Smarty.php

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

位置: /third_party/Smarty/plugins/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;
}

以上似乎引发了以下聪明错误:

致命错误:在 /home/something/public_html/application/third_party/Smarty/sysplugins/smarty_internal_templatebase.php:717 中包含消息“outputfilter“protect_email”不可调用的未捕获异常“SmartyException”: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->library('smarty') #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 行/home/something/public_html/application/third_party/Smarty/sysplugins/smarty_internal_templatebase.php 中的 CI_Loa 位于第 717 行/home/something/public_html/application/third_party/Smarty/sysplugins/smarty_internal_templatebase.php 中的 CI_Loa 位于第 717 行

抱歉拖了这么久!只是认为看到整个错误可能会有所帮助。

非常感谢阅读,希望有人能提供帮助。

--> EDIT 还尝试使用以下命令显式设置插件目录位置:

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

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

4

1 回答 1

0

好吧,这是一个愚蠢的错误。

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

outputfilter.protect_email.php

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

smarty_outputfilter_protect_email

这对我很有用。

于 2012-05-26T22:10:09.777 回答