Как конвертировать в YIA CDataProvider на просмотр?

Я пытаюсь узнать Yii и посмотрел документацию Yii, но все равно не понимаю. Я до сих пор не знаю, как использовать CDataProvider на контроллере и в представлении, чтобы отобразить все сообщения в блоге, доступные в представлении. Кто-нибудь может посоветовать или привести пример на основе следующего:

ActionIndex в моем PostController:

public function actionIndex() { $posts = Post::model()->findAll(); $this->render('index', array('posts' => $posts)); )); 

View, Index.php:

 <div> <?php foreach ($post as $post): ?> <h2><?php echo $post['title']; ?></h2> <?php echo CHtml::decode($post['content']); ?> <?php endforeach; ?> </div> 

Вместо того, чтобы делать выше, может ли кто-нибудь посоветовать, как использовать CDataProvider для генерации вместо этого?

Большое спасибо.

Solutions Collecting From Web of "Как конвертировать в YIA CDataProvider на просмотр?"

Лучшее, что я могу предложить, это использовать 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> 

объяснение

В основном в указательном действии контроллера мы создаем новый CActiveDataProvider, который предоставляет данные модели Post для нашего использования, и мы передаем этот dataprovider в индексный вид.
В представлении индекса мы используем виджет Zii CListView, который использует dataProvider, который мы передали в качестве данных для создания списка. Каждый элемент данных будет отображаться как закодированный в файле itemView, который мы передаем в качестве атрибута виджета. Этот файл itemView будет иметь доступ к объекту модели Post в переменной $ data.

Предлагаемое чтение: разработка Agile Web Application с 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); } ?>