Лучшее, что я могу предложить, это использовать CListView в вашем представлении и CActiveDataProvider в вашем контроллере. Итак, ваш код выглядит примерно так:
Контроллер
public function actionIndex()
{
$dataProvider = new CActiveDataProvider('Post');
$this->render('index', array('dataProvider' => $dataProvider));
}
index.php :
<?php
$this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_post', // refers to the partial view named '_post'
// 'enablePagination'=>true
)
);
?>
_post.php : этот файл будет отображать каждое сообщение и передается как атрибут виджета CListView (, а именно 'itemView'=>'_post'
) в представлении index.php.
<div class="post_title">
<?php
// echo CHtml::encode($data->getAttributeLabel('title'));
echo CHtml::encode($data->title);
?>
</div>
<br/><hr/>
<div class="post_content">
<?php
// echo CHtml::encode($data->getAttributeLabel('content'));
echo CHtml::encode($data->content);
?>
</div>
Объяснение * * 1023
В основном в действии index контроллера мы создаем новый CActiveDataProvider, который предоставляет данные модели Post для нашего использования, и мы передаем этот поставщик данных в представление index.
В В индексном представлении мы используем Zii виджет CListView, который использует dataProvider, который мы передали в качестве данных для генерации списка. Каждый элемент данных будет отображаться как закодированный в файле itemView, который мы передаем в качестве атрибута виджету. Этот файл itemView будет иметь доступ к объекту модели Post в переменной $ data.
Рекомендуемое чтение: разработка гибких веб-приложений с использованием Yii 1.1 и PHP 5
Очень хорошая книга для начинающих Yii. Она указана на главной странице Yii.
Редактировать:
По запросу без CListView
index.php
<?php
$dataArray = $dataProvider->getData();
foreach ($dataArray as $data){
echo CHtml::encode($data->title);
echo CHtml::encode($data->content);
}
?>