【发布时间】:2016-02-06 03:55:12
【问题描述】:
我目前在控制器中有以下内容,它从 S3 获取用户的头像,如果他们有头像,则返回 S3 url,否则返回默认值。
public function GetAvatar(Request $request){
$userid = Auth::user() ? Auth::user()->id : 0;
$url = url('/cdn/avatar/default.png');
if($userid > 0){
$md5 = md5($userid);
$disk = Storage::disk('s3');
$exists = $disk->has('avatars/' . $md5 . '.png');
if($exists){
$url = env('URL_AVATARS') . $md5 . '.png';
}
}
return response()->json($url);
}
我不想每次都写这个,所以我想把它移到一个集中的位置,这样我就可以从任何地方调用它。由于我还是 Laravel 的新手,所以我不确定将代码放在哪里。
我要创建Service Provider 吗? Middleware?还有什么?然后我将如何访问这个新方法?
【问题讨论】:
-
您好,您可以创建 trait 并包含在任何地方
-
为什么不让它成为用户模型的访问器呢?所以你可以在任何地方做
$user->avatar? -
模型不是用来与数据库交互的吗?
-
我想到了像
Angular这样的服务/工厂。我可以创建一个对象并注册它,然后将它注入到控制器中,然后从任何使用它的地方修改它,它会随处改变。基本上它只被实例化一次,所以无论在哪里使用它的值都是一样的。