четверг, 19 марта 2009 г.

CakePHP 1.1.x и элементы

Долго вчера бился с задачей: как в отображении одного действия отображать результат работы другого, или на каждой странице отображать один и тот же блок, например, последних новостей. Спасибо, хоть на форуме поддержки помогли =)

Оказывается, все намного проще.
В нужном контроллере пишем функцию, которая непосредственно возвращает результат, например так:
function last()
{
return $this->Post->findAll('', array("title", "created", "introtext"), "created desc", 3);
}
Затем создаем элемент для отображения:
$news = $this->requestAction("/posts/last/");

foreach($news as $new) {
echo "
".$new['Post']['created']."
";
echo "
".$new['Post']['title']."
";
echo "
".$new['Post']['introtext']."
";
echo '

';
}
?>
А затем этот элемент просто засовываем в шаблон:
renderElement('news'); ?>
Все оказалось в два раза проще, чем я думал %)

2 комментария:

  1. ох, что же это за некро-ретро такое, версия 1.1 =) на него уже и ссылок на офсайте нет. а по поводу элементов - вот же в доках все есть.
    http://book.cakephp.org/view/560/Passing-Variables-into-an-Element

    ОтветитьУдалить
  2. Да это я по неопытности решил начать с простого и начал с 1.1 =)

    Главное -- до конца дошел-таки!

    ОтветитьУдалить