2010-05-31 28 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循環,並語法變成一個乾淨的單線程