2012-05-21 3 views
0

Я пытаюсь читать внешние данные с помощью file_get_contents с помощью smartySmarty Template Engine - Файл получить содержимое

Однако, я получаю эту ошибку.

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

Вы называете это IN smarty? Вы должны назначить его smarty из вашего PHP-файла, используя $ smarty-> assign ('var', $ var); ** edit ** можете ли вы показать какой-то код того, что вы пытаетесь сделать, или где вы используете это? – Bono

+0

что вы пытаетесь сделать точно и почему с помощью tpl-файла? – marvin

+0

{assign var = data value = 'http: //path.to/JSON' | file_get_contents} {$ data | @print_r} Я действительно это сделал – user1407540

ответ

1

Maybe здесь может быть полезен плагин {fetch}. В любом случае, @shadyyx не ошибается. Вы можете просто захотеть присвоить содержимое и сделать вашу жизнь проще.

0

Что вам нужно сделать, это настроить параметры безопасности smarty.

Исходный код, как показано ниже:

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 контроллера:

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

ИЛИ

$smarty->assign('data', file_get_contents('path_to_json')); 
Смежные вопросы