在yii2中根据用户登录显示gridview

时间:2016-11-05 10:40:12

标签: yii2 yii2-advanced-app yii2-user

如何根据当前用户登录索引显示gridview?例如,学生A登录并填写表格并注销。当其他学生登录时,学生A填写的数据将不会显示。

在gridview

        <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'columns' => [
        ['class' => 'yii\grid\SerialColumn'],

        'education_id',
        'year',
        'fieldstudy',
        'institute',
        'grade',

        ['class' => 'yii\grid\ActionColumn'],
    ],
]); ?>      

在控制器

      public function actionIndex()
{
    $dataProvider = new ActiveDataProvider([
         'query' => Education::find()->
              where(['user_id' => Yii::$app->user->identity->id ]),
    ]);
    ]);

    return $this->render('index', [
        'dataProvider' => $dataProvider,
    ]);
}
}

模特

    class Education extends ActiveRecord implements IdentityInterface
   {

public static function tableName()
{
    return 'education';
}


public function rules()
{
    return [
        [['year', 'fieldstudy', 'institute', 'grade'], 'required'],
        [['user_id'], 'integer'],
        [['year', 'fieldstudy', 'institute', 'grade'], 'string', 'max' => 255],
    ];
}


public function attributeLabels()
{
    return [
        'education_id' => 'Education ID',
        'student_id' => 'Student ID',
        'year' => 'Year',
        'fieldstudy' => 'Fieldstudy',
        'institute' => 'Institute',
        'grade' => 'Grade',
    ];
}

public  function getId($id)
{
    return static::find(['user_id' => $id]);

}

1 个答案:

答案 0 :(得分:0)

如果您需要检索与用户ID相关的教育信息,并假设在Education模型中此关系基于字段user_id,您可以使用Yii::$app->user->identity->id

  $dataProvider = new ActiveDataProvider([
    'query' => Education::find()->
                  where(['user_id' =>  Yii::$app->user->identity->id ]),
]);