无法使用laravel配置文件控制器中的auth :: user()传递$用户变量



我一周前才开始学习laravel,我遇到了中间件和使用auth :: user()的问题。对于Laravel> 5.3,您无法再通过控制器内的会话变量。我希望能够将$用户模型传递回刀片文件(在URL字符串中输入为{{$ user-> avatar}}),但我不知道该怎么做。

我整天都花了一整天(根据https://laravel.com/docs/5.3/upgrade#5.3-session-in-constructors的建议:用户)。我真的不理会如何进行,如果有人能帮助我,我将不胜感激。

<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesFile;
use AppHttpRequests;
use AppUser;
use Auth;
use Image;
class ProfileController extends Controller
{
    public function profile($id)
    {
        $user = User::where('id', $id)->first();
        return view('user.profile',compact('user'));
    }
    public function update_avatar(Request $request)
    {
        if($request->hasFile('avatar')){
            $avatar = $request->file('avatar');
            $filename = time() . '.' . $avatar->getClientOriginalExtension();
            Image::make($avatar)->resize(300, 300)->save( public_path('/uploads/avatars/' . $filename));
            $user = Auth::user();
            $user->avatar = $filename;
            $user->save();
            dd($user);
        }
        return view('user.profile',compact('user'));
    }
}

作为您的dd(Auth::user())profile()方法中返回您的预期数据,请尝试以下操作:

public function profile(){
    $user = Auth::user();
    return view('profile', compact('user'));
}

然后,您应该能够在刀片文件中进行{{ $user->id }}。我知道以上代码类似于您拥有的代码,但值得一试!

您无需从控制器传递身份验证的用户。

在您的刀片模板中,只需直接使用它,例如:

{{ Auth::user()->id }}

假设用户已登录。

如果创建自己的管理员验证卫队。当您的DD(auth :: guard('admin') -> user())返回您的登录管理用户的预期数据时,请尝试以下操作:

public function profile(){
     $user = Auth::guard('admin')->user();
     return view('profile', compact('user'));
}

然后,您应该能够在刀片文件中进行{{$ user-> id}}。我知道以上代码与您拥有的代码相似,但值得一小部分。

如果您创建自己的auth Guard使用tha auth Data,则使用auth Guard名称使用User()方法。

最新更新