加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何转换为在视图上使用Yii CDataProvider?

发布时间:2020-12-13 22:40:44 所属栏目:PHP教程 来源:网络整理
导读:我正在努力学习Yii,并查看了Yii文档,但仍然没有真正得到它.我仍然不知道如何在Controller和View上使用CDataProvider来显示视图上可用的所有博客文章.任何人都可以根据以下建议或举例说明: 我的PostController中的actionIndex: public function actionIndex
我正在努力学习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应用程序开发
Yii主页上列出了一本非常好的Yii初学者书.

编辑:没有CListView的问题

的index.php

<?php
 $dataArray = $dataProvider->getData();
foreach ($dataArray as $data){
echo CHtml::encode($data->title);
echo CHtml::encode($data->content);
}
?>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读