【发布时间】:2016-01-16 09:59:40
【问题描述】:
这是一个非常常见的任务。我正在尝试在整个网站的导航上显示用户个人资料图片。 个人资料图片是来自 google、facebook 或来自 s3(如果用户上传它们)的 url。我有这个功能可以访问图片
public static function get_profile_pic($user){
$pic=array_flatten($user->media->where('category','profile'))[0]->path;
if(empty($pic)){
$pic = '/images/user-icon.jpg';
return $pic;
}else
return $pic;
}
在我的导航视图中,我有:
@if(Auth::check())
<li><img class='nav-pic' src='<?php link_to_action('HomeController@index',$pic)?>'/></li>
我的家庭控制器:
类 HomeController 扩展控制器 {
public function index(Request $request) {
if ($request->user()) {
$user = $request->user();
$pic = User::get_profile_pic($user);
}
view()->share('scripts', array('home.js'));
return view('home.index', compact('user'));
}
这就是我在 AppServiceProvider 中所拥有的
public function boot()
{
if (Auth::check()){
$user = Auth::user();
$pic = User::get_profile_pic($user);
view()->composer('includes.new_nav1',function($view){
$view->with('pic', User::get_profile_pic($user));
});
}
}
【问题讨论】:
-
我在 laracast 中遵循了一个教程。 laracasts.com/series/laravel-5-fundamentals/episodes/25.
-
将
$view->with('pic', User::get_profile_pic($user));更改为$view->with('pic',$pic);我认为您的 AppServiceProvider 类的顶部有use App\User;,如果没有添加它或将$pic = User::....更改为$pic = App\User::.. -
您的静态函数也存在于您的用户模型中吗?你在用户模型上调用它,然后将用户传递给它?不应该只是
$pic = get_profile_pic($user);吗?我会将这种东西作为通过 composer 自动加载的辅助函数 -
是的,它在我的用户模型中。我的开发人员不想要任何与模型相关的辅助函数,所以我没有别的办法。此外,我仍然收到未定义的变量图片消息。在我看来,我可能传递了错误的东西吗?
标签: php laravel laravel-5 blade service-provider