Yii Gridview 显示来自相关数据的图像

Yii Gridview show image from related data

我有 table 反馈和用户,我正在尝试在反馈页面上显示用户的图像。 我正在使用网格视图,这是我的网格视图。

        [   'attribute' => 'iduser.photo',
            'headerOptions' => ['width' => '20px'],
            'format' => 'image',
            'value'=>  function($data) { return $data->imageurl; },
        ],

和模型

public function getImageurl()
{
    return \Yii::$app->request->BaseUrl.'/../../'.$this->hasOne(User::className(), ['photo' => 'photo']);

}

我答对了url但是照片名称是错误的结果是"photo",我想获取数据形式的实体照片?

在您的模型中,您应该有一种方法让用户与您的反馈相关,如下所示:

public function getUser() {
    return $this->hasOne(User::className(), ['id' => 'user_id']);
}

那么您的 getImageurl 方法应该如下所示:

public function getImageurl()
{
    return \Yii::$app->request->BaseUrl.'/../../'.$this->user->photo;
}

我建议查看 Aliases,您可以使用它们代替 \Yii::$app->request->BaseUrl。例如,这是我用来获取文件 url 以显示给用户的实现:

public function getFileUrl() {
    return Yii::getAlias('@web/uploads/'.$this->fileName);
}