Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法在Laravel配置文件控制器中使用Auth::user()传递$user变量_Php_Laravel - Fatal编程技术网

Php 无法在Laravel配置文件控制器中使用Auth::user()传递$user变量

Php 无法在Laravel配置文件控制器中使用Auth::user()传递$user变量,php,laravel,Php,Laravel,我一周前刚开始学习Laravel,我遇到了中间件和使用Auth::user()的问题。对于Laravel>5.3,您不能再在控制器内传递会话变量。我希望能够将$user模型传递回blade文件(在URL字符串中作为{{{$user->avatar}}输入),但我不知道怎么做 我花了一整天的时间(根据来自的建议),始终得到空值,并出现错误(未定义的变量:user)。我真的不知道如何进行,如果有人能帮助我,我将不胜感激 <?php namespace App\Http\Controllers

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

我花了一整天的时间(根据来自的建议),始终得到空值,并出现错误(未定义的变量:user)。我真的不知道如何进行,如果有人能帮助我,我将不胜感激

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\File;
use App\Http\Requests;
use App\User;
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'));
    }
}

您不需要从控制器传递经过身份验证的用户

在刀片式模板中,只需直接使用此选项,例如:

{{ Auth::user()->id }}
这假定用户已登录。

由于
dd(Auth::User())
方法中的
profile()
返回了预期的数据,请尝试以下操作:

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

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

如果您创建自己的管理员身份验证保护。 由于your profile()方法中的dd(Auth::guard('admin')->user())返回了登录管理用户的预期数据,请尝试以下操作:

public function profile(){
    $user = Auth::user();
    return view('profile', compact('user'));
}
public function profile(){
     $user = Auth::guard('admin')->user();
     return view('profile', compact('user'));
}
然后,您应该能够在刀片文件中执行{{$user->id}}。我知道上面的代码与您的代码类似,但值得一提


如果您创建自己的身份验证保护,请使用身份验证数据,然后将user()方法与身份验证保护名称一起使用。

在您的
profile()
方法中,如果您
dd(auth::user())
,您会得到什么?假设您已登录inI,则获取可填充、隐藏、属性、原始和其他属性。所有数组都已满,并带有值。奇怪。你的
update\u avatar
方法理想情况下应该有
$user=Auth::user()
你介意把我的答案标记为与你原来问题的答案一样正确吗?在
中,如果
执行
dd($request)
同样,
compact('user')
仅使用字符串创建数组,而不是使用用户。但是,我希望使用变量$user。我希望能够查看其他用户配置文件及其数据,Auth::user()将返回我的信息,而不是其他用户的信息。@masshakar在这种情况下,您可以将其他用户的ID从视图传递到控制器,然后在对其化身进行操作之前,在控制器函数中获取该用户。该用户的ID足够了。@masshakar到目前为止,您的更新功能只更新登录用户的头像。这确实有效,但为什么我无法使用update\u avatar方法访问用户变量?form action属性是“{action('ProfileController@profile“,$user->id)}}”,方法是“POST”,我将csrf_标记()作为输入,并将web路由设置为:route::POST('/profile/{id}',['uses'=>”ProfileController@update_avatar']);所以你告诉表单帖子使用
profile
方法,但你希望它使用
update\u avatar
方法?我在上面的回答中回答了您的原始问题@masshakarSee对原始帖子的评论以获取详细信息,您的问题中是否可能遗漏了一些重要信息