首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CGridView及相关表格

CGridView及相关表格
EN

Stack Overflow用户
提问于 2013-01-25 00:15:38
回答 3查看 154关注 0票数 0

我正在尝试列出指定用户的CGridView帖子,但出现错误。执行此操作的正确方法是什么?

Controller.php

代码语言:javascript
复制
public function actionListPosts($id)
{
    $criteria = new CDbCriteria;
    $criteria->with=array('posts');
    $criteria->condition='t.id=:user_id';
    $criteria->params=array(':user_id'=>$id);

    $dataProvider=new CActiveDataProvider('Users', array(
            'criteria' => $criteria
    ));

    $this->render('list',array(
        'dataProvider'=>$dataProvider,
    ));
}

View.php:

代码语言:javascript
复制
<?php $this->widget('zii.widgets.grid.CGridView',array(
    'id'=>'events-grid',
    'dataProvider'=>$dataProvider->posts,
    'columns'=>array(
        'id',
        'name',
    ),
)); ?>

错误:

代码语言:javascript
复制
 Property "CActiveDataProvider.posts" is not defined.
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-28 15:27:13

必须使用Post模型的数据提供程序,而不是User模型

在控制器中

代码语言:javascript
复制
public function actionListPosts($id)
{
    $criteria = new CDbCriteria;
    $criteria->condition='t.user_id=:user_id';
    $criteria->params=array(':user_id'=>$id);

    $dataProvider=new CActiveDataProvider('Post', array(
            'criteria' => $criteria
    ));

    $this->render('list',array(
        'dataProvider'=>$dataProvider,
    ));
}

在视图中

代码语言:javascript
复制
<?php $this->widget('zii.widgets.grid.CGridView',array(
    'id'=>'events-grid',
    'dataProvider'=>$dataProvider,
    'columns'=>array(
        'id',
        'name',
    ),
)); ?>
票数 1
EN

Stack Overflow用户

发布于 2013-01-29 07:18:42

如果您还希望能够按此列进行搜索和排序,请尝试http://www.mrsoundless.com/php/yii/searching-and-sorting-a-column-from-a-related-table-in-a-cgridview/

票数 2
EN

Stack Overflow用户

发布于 2013-01-25 21:45:12

在控制器操作中,你可以写

代码语言:javascript
复制
$dataProvider=new CActiveDataProvider('NameofPostTableAR',array(
    'criteria'=>array(
    'condition'=>'post_id='.$id,)));

 $this->render('list',array(
    'dataProvider'=>$dataProvider,
));

在视图中你可以写

代码语言:javascript
复制
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'post-grid',
'dataProvider'=>$dataprovider,
'columns'=>array(
    'post_id',
    'post_name',
    array(
        'class'=>'CButtonColumn',
    ),
),
)); ?>

这里我假设ur Posts表中的字段是(post_id,post_name)

我希望它在你的情况下是正确的..

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14505848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档