php – 如何转换为在视图上使用Yii CDataProvider?
我正在努力学习Yii,并查看了Yii文档,但仍然没有真正得到它.我仍然不知道如何在Controller和View上使用CDataProvider来显示视图上可用的所有博客文章.任何人都可以根据以下建议或举例说明:
我的PostController中的actionIndex: 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来生成? 非常感谢.
我建议的最好的是在视图中使用
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:此文件将显示每个帖子,并在index.php视图中作为窗口小部件CListView的属性(即“itemView”=>“_ post”)传递. <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模型的数据,我们将这个数据提供者传递给索引视图.在索引视图中,我们使用Zii小部件CListView,它使用dataProvider我们作为数据传递以生成列表.每个数据项将在我们作为属性传递给小部件的itemView文件中呈现为编码.此itemView文件可以在$data变量中访问Post模型的对象. 推荐阅读:使用Yii 1.1和PHP 5进行敏捷Web应用程序开发 编辑:没有CListView的问题 的index.php <?php $dataArray = $dataProvider->getData(); foreach ($dataArray as $data){ echo CHtml::encode($data->title); echo CHtml::encode($data->content); } ?> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |