Auth / User的公开个人资料

时间:2016-08-05 14:13:03

标签: php laravel laravel-5.2

我是Laravel的新手。另外,我不擅长PHP。所以,我正在尝试为Auth用户创建一个公开的配置文件,但我不知道该怎么做。

我在routes.php

上使用了此功能
Route::get('{username}', 'UserController@profile_public');
UserController.php中的

public function profile_public(){
    return view('profile', array('user' => Auth::user()) );
}

profile.blade.php

@if (Auth::guest())
            <img src="/uploads/avatars/{{ Auth::user()->username }}/{{ Auth::user()->avatar }}" style="width:150px; height:150px; float:left; border-radius:50%; margin-right:25px;">
            <h2>{{ $user->name }}'s Profile</h2>
        @else
            <img src="/uploads/avatars/{{ Auth::user()->username }}/{{ Auth::user()->avatar }}" style="width:150px; height:150px; float:left; border-radius:50%; margin-right:25px;">
            <h2>{{ $user->name }}'s Profile</h2>
            <form enctype="multipart/form-data" action="/profile" method="POST">
                <label>Update Profile Image</label>
                <input type="file" name="avatar">
                <input type="hidden" name="_token" value="{{ csrf_token() }}">
                <input type="submit" class="pull-right btn btn-sm btn-primary">
            </form>
        @endif

我正在尝试暂时显示avatarname。但这对我不起作用。我收到此错误 - Trying to get property of non-object (View: C:\bimbl\resources\views\profile.blade.php)

请帮帮我。感谢

1 个答案:

答案 0 :(得分:0)

您无法致电Auth::user()获取客人详细信息,但这并非如此。 Auth::user正在呼叫经过身份验证的用户。

您收到该错误是因为Auth::user()的结果为null,因为未进行身份验证。因此,您尝试在null值上查找属性。

如果您想为访客用户提取数据,那么假设您确实使用User::where('username', 'myguestusername')->first()表,那么最好只调用users之类的内容。

它应该放在UsersController

public function profile_public($username)
{
    $user = User::where('username', $username)->first();

    return view('profile')->with('username', $user);
}

由于您的路线请求{username}作为参数,因此您还必须确保将其传递给profile_public方法,如上所示。这样,您对User模型的调用就会知道要查找的内容。