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