用户模型中的gravatar

时间:2014-09-18 17:53:41

标签: php yii

在我的models/User.php中如何为我的gravatar调用小部件?它甚至可能/可取吗?或者我应该只在我的视图中调用小部件?

这是我的功能

public function getAvatar() {

            $user = User::model()->findByPk(Yii::app()->user->id);

            $id = $user->id;
            $dir = 'uploads/user';
            $img = $user->avatar_link;
            $full_img_dir = './'.$dir.'/'.$id.'/'.$img;

        if (!empty($img) && file_exists($full_img_dir)) 
        {
               return Yii::app()->request->baseUrl.'/'.$dir.'/'.$id.'/'.$img;
        }
        else
        {
            $this->widget('site.common.extensions.yii-gravatar.YiiGravatar', array(
                          'email'=>$user->email,
                          'size'=>100,
                          'defaultImage'=>'mm',
                          'secure'=>true,
                          'rating'=>'pg',
                          'emailHashed'=>md5,
                     ));
        }
    }

这是我得到的错误

User and its behaviors do not have a method or closure named "widget". 

1 个答案:

答案 0 :(得分:1)

在我看来,你应该从扩展名调用模型而不是其他方式:

例如在/extensions/Gravatar/Gravatar.php中,您可以使用getAvatar()代码创建一个函数init(),然后加载另一个小部件(http://www.yiiframework.com/forum/index.php/topic/25678-load-widget-from-inside-widget/

这就是我这样做的方式:1个新的自定义扩展程序可以加载到位。