2010-05-31 5 views
0

Я использую cakephp для своего сайта. Я сохранил несколько блоков в базе данных и попытался получить доступ к коду со следующим синтаксисом.CakePHP requestAction и eval code

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

набор :: экстракт часто быстрее, чем цикл по каждому элементу, и синтаксис становится чистым однострочным

 Смежные вопросы

  • Нет связанных вопросов^_^