0

CGridView指定されたユーザーの投稿を一覧表示しようとしていますが、エラーが発生します。これを行う正しい方法は何ですか?

Controller.php

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:

<?php $this->widget('zii.widgets.grid.CGridView',array(
    'id'=>'events-grid',
    'dataProvider'=>$dataProvider->posts,
    'columns'=>array(
        'id',
        'name',
    ),
)); ?>

エラー:

 Property "CActiveDataProvider.posts" is not defined.
4

3 に答える 3

2

この列で検索して並べ替えることもできるようにしたい場合は、http://www.mrsoundless.com/php/yii/searching-and-sorting-a-column-from-a-related-table-inを試してください。 -a-cgridview /

于 2013-01-28T23:18:41.713 に答える
1

Postモデルではなく、Userモデルにデータプロバイダーを使用する必要があります

コントローラー内

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,
    ));
}

とビューで

<?php $this->widget('zii.widgets.grid.CGridView',array(
    'id'=>'events-grid',
    'dataProvider'=>$dataProvider,
    'columns'=>array(
        'id',
        'name',
    ),
)); ?>
于 2013-01-28T07:27:12.897 に答える
0

コントローラアクションでは、次のように書くことができます---

$dataProvider=new CActiveDataProvider('NameofPostTableAR',array(
    'criteria'=>array(
    'condition'=>'post_id='.$id,)));

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

そしてビューであなたは書くことができます---

<?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)と想定しました。

私はそれがあなたの場合にうまくいくことを願っています。

于 2013-01-25T13:45:12.197 に答える