2010-05-31 63 views
0

我使用cakephp作为我的网站。我在数据库中存储了多个块,并尝试使用以下语法访问代码。CakePHP requestAction和eval代码

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

我得到这个错误;

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

您的帮助将不胜感激。

感谢,

回答

0

你为什么要使用eval呢?试试这个:

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

我已经在我的主题中的不同位置上使用此代码动态块。我已经使用这段提到的代码重新解决了我的问题。

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

同意 - 尽管你可以得到更看中/优化,使用设置::萃取,如:

<?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

集::提取物往往快于foreach循环,并语法变成一个干净的单线程