CakePHP requestAction和eval代码

时间:2010-05-31 00:55:05

标签: cakephp-1.3

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

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

我们非常感谢您的帮助。

谢谢,

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

同意 - 虽然你可以得到更多花哨/优化,并使用set :: extract,如:

<?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 :: extract通常比foreach循环更快,语法变得干净一行