在我的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".
在我看来,你应该从一个扩展调用模型,而不是从另一个方向调用:
例如,在/extensions/Gravatar/Gravatar.php中,您可以使用getAvatar()代码创建一个函数init(),然后加载其他小部件(http://www.yiiframework.com/forum/index.php/topic/25678-load-widget-from-inside-widget/)
我就是这样做的:1个新的自定义扩展,将所有内容都加载到位。