我在我的网站上使用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
我们非常感谢您的帮助。
谢谢,
答案 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循环更快,语法变得干净一行