2012-05-26 39 views
1

我目前使用codeigniter 2與ci-Smarty。剛剛嘗試添加一個聰明的輸出過濾器,但沒有多少運氣。它就好像功能找不到或什麼東西?Smarty輸出過濾器與Codeigniter和Ci-Smarty「不可調用」錯誤

我使用的插件作爲輸出濾波器功能,並具有以下的代碼:

LOCATION: /libraries/Smarty.php

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

LOCATION:/THIRD_PARTY/Smarty的/插件/ 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; 
} 

上面好像把第e下面的smarty錯誤:

Fatal error: Uncaught exception 'SmartyException' with message 'outputfilter "protect_email" not callable' in /home/something/public_html/application/third_party/Smarty/sysplugins/smarty_internal_templatebase.php:717 Stack trace: #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(Array) #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 on line 717

對不起,它太長了!只是認爲看到整個錯誤可能會有所幫助。

非常感謝您的閱讀並希望有人能夠提供幫助。

- >編輯 也只是想明確設置使用的插件目錄的位置:

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

的呼應了這是正確的,但仍然得到了同樣的問題:(

回答

0

好了位置是一個愚蠢的錯誤

對於有同樣問題的任何其他人,我只是看透了,並意識到插件不應該被稱爲一個常規函數,例如它應該被稱爲:

outputfilter.protect_email.php 

另外,還要與函數名稱相同的修訂,以及因此在我的情況下,它應該被稱爲:

smarty_outputfilter_protect_email 

這個工作對我來說太棒了。