2012-05-21 6 views
0

i essayer de lire des données externes avec file_get_contents SmartySmarty Template Engine - Fichier obtenir le contenu

Cependant, je reçois cette erreur.

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 

Existe-t-il un autre moyen d'obtenir des données? Ou comment puis-je permettre à smarty d'utiliser cette fonction?

+0

Appellez-vous cela IN smarty? Vous devriez l'assigner à smarty depuis votre fichier PHP en utilisant $ smarty-> assign ('var', $ var); ** edit ** pourriez-vous montrer un code de ce que vous essayez de faire, ou où vous l'utilisez? – Bono

+0

qu'est-ce que vous essayez de faire exactement et pourquoi avec le fichier tpl? – marvin

+0

{assign var = data value = 'http: //path.to/JSON' | file_get_contents} {$ data | @print_r} Je l'ai fait en fait – user1407540

Répondre

1

Peut-être le plugin {fetch} peut vous aider ici. En tout cas, @shadyyx n'a pas tort. Vous pourriez juste vouloir assigner le contenu et rendre votre vie plus simple.

0

Ce que vous devez faire est de configurer les paramètres de sécurité smarty.

Le code source est comme ci-dessous:

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

L'erreur indique que vous êtes en mode sécurisé. Cela signifie que Smarty ne vous permet pas d'exécuter un script PHP (dépend du niveau du mode sécurisé) ou d'appeler beaucoup de fonctions PHP.

Soit Vous pouvez activer le mode sans échec OFF que je ne recommande pas ou vous devez placer le code PHP dans votre contrôleur et assign var dans le contrôleur PHP:

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

OU

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