我是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
我正在尝试暂时显示avatar
和name
。但这对我不起作用。我收到此错误 - Trying to get property of non-object (View: C:\bimbl\resources\views\profile.blade.php)
请帮帮我。感谢
答案 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
模型的调用就会知道要查找的内容。