2010-05-31 8 views
0

J'utilise cakephp pour mon site. J'ai stocké plusieurs blocs dans la base de données et j'essaie d'accéder au code avec la syntaxe suivante.CakePHP requestAction et le code d'évaluation

foreach($blocks as $block){ 
    if($block['Block']['position'] == 'left'){ 
     $str = $block['Block']['value']; 
     eval("\"echo $str\";"); 
    } 
} 

Et j'obtiens cette erreur;

: Undefined property: View::$requestAction [APP\views\layouts\home.ctp(60) : eval()'d code 

Votre aide sera grandement appréciée.

Merci,

Répondre

0

Pourquoi utilisez-vous eval du tout? Essayez ceci:

foreach($blocks as $block){ 
    if($block['Block']['position'] == 'left'){ 
     $str = $block['Block']['value']; 
     echo htmlentities($str); 
    } 
} 
0

J'ai utilisé ce code pour les blocs dynamiques sur différentes positions dans mon thème. J'ai résolu mon problème en utilisant ce morceau de code mentionné.

foreach($blocks as $block){ 
    if($block['Block']['position'] == 'left'){ 
     $str = $block['Block']['value']; 
     echo $this->requestAction($str); 
    } 
} 
0

Convenu - si vous pouvez obtenir plus de fantaisie/optimisé et utiliser set :: extraire comme:

<?php 
echo implode("",set::extract($blocks,"/Block[position=left]/value")); 
// or 
echo current(set::extract($blocks,"/Block[position=left]/value")); 
?> 

http://book.cakephp.org/view/1501/extract

set :: extrait est souvent plus rapide qu'une boucle foreach, et la syntaxe devient une ligne simple