如何从gridview获取不同的数据

时间:2016-11-15 17:54:44

标签: php yii yii2

当我点击gridview项目时,我想从gridview中显示不同的记录。现在,当我点击项目时,我有这个网址: http://localhost/test/basic/site/0

我将actionView添加到我的控制器来处理它,但不知道该怎么做。在我的gridview记录中,数字从0开始,但在db中,我只有3,4,5条记录。我怎么能处理这个? 我在控制器中的方法:

public function actionIndex()
    {
        if(Yii::$app->user->isGuest)
        {
            return $this->redirect(['login']);
        }
        else
        {
        $dataProvider = new SqlDataProvider([
    'sql' => 'SELECT p.id,p.user_id,p.post_title,p.post_text,u.name ' .
             'FROM Posts p '.
             'INNER JOIN User u ' .
             'ON p.user_id = u.id'
]);
        return $this->render('index',['dataProvider'=>$dataProvider]);
        }
    }

in actionIndex我显示索引页面,其中包含我的数据库中的所有记录。 我有另一种方法必须处理点击项目。现在它就像actionIndex一样。

public function actionView($id)
   {
       if(Yii::$app->user->isGuest)
       {
           return $this->redirect(['login']);
       }
       else
       {
       $dataProvider = new SqlDataProvider([
   'sql' => 'SELECT p.id,p.user_id,p.post_title,p.post_text,u.name ' .
            'FROM Posts p '.
            'INNER JOIN User u ' .
            'ON p.user_id = u.id'
]);
       return $this->render('index',['dataProvider'=>$dataProvider]);
       }
    }

1 个答案:

答案 0 :(得分:0)

有时,actionView用于显示与单个实例相关的valaue

public function actionView($id)
{
   $model => User::findModel($id);

    return $this->render('view', [
        'model' => $model,
    ]);
}

并在views / your_controller / view.php

<div class="my-model-view">

<h3>My Title</h3>


<?= DetailView::widget([
    'model' => $model,
    'attributes' => [
        'your_column1',
        'your_column1',
    ......  
    ],
]) ?>

其中your_column1,....是$ model

中属性的名称