2012-05-21 97 views
0

我嘗試使用smarty讀取file_get_contents的外部數據Smarty模板引擎 - 文件獲取內容

但是,我收到此錯誤。

Fatal error: Smarty error: [in /opt/lampp/htdocs/blog/serendipity/templates/templates3/index.tpl line 107]: [plugin] (secure mode) modifier 'file_get_contents' is not allowed (Smarty_Compiler.class.php, line 1934) in /opt/lampp/htdocs/blog/serendipity/bundled-libs/Smarty/libs/Smarty.class.php on line 1093 

是否有其他方式獲取數據?或者我該如何讓smarty使用此功能?

+0

你在調用這個聰明嗎?您應該使用$ smarty-> assign('var',$ var)將它從您的PHP文件分配給smarty; **編輯**可以顯示一些你想要做什麼的代碼,或者你在哪裏使用它? – Bono

+0

你想要做什麼,以及爲什麼在tpl文件? – marvin

+0

{assign var = data value ='http://path.to/JSON'| file_get_contents} {$ data | @print_r}我實際上做了這個 – user1407540

回答

1

也許{fetch}插件可以在這裏幫助。無論如何,@shadyyx並沒有錯。你可能只想分配內容,讓你的生活更簡單。

0

你應該做的是配置聰明的安全設置。

的源代碼如下:

if ($smarty->security && !in_array($_name, $smarty->security_settings['MODIFIER_FUNCS'])) { 
    $_message = "(secure mode) modifier '$_name' is not allowed"; 
} else { 
    if (!function_exists($_name)) { 
     $_message = "modifier '$_name' is not implemented"; 
    } else { 
     $_plugin_func = $_name; 
     $_found = true; 
    } 
} 
0

錯誤說,你是在安全模式下。這意味着Smarty不允許您運行PHP腳本(取決於安全模式級別)或調用許多PHP函數。

要麼你可以打開關閉安全模式,我不建議,或者你應該將PHP代碼到你的控制器和PHP控制器內分配VAR:

... 
$data = file_get_contents('path_to_json'); 
$smarty->assign('data', $data); 
... 

OR

$smarty->assign('data', file_get_contents('path_to_json'));