2016-08-05 12 views
0

Ich bin ein Neuling auf Laravel. Außerdem bin ich nicht sehr gut in PHP. Also, ich versuche ein öffentliches Profil für die Auth-Benutzer zu erstellen, aber ich verstehe nicht, wie es geht.Auth/Users öffentliches Profil

ich verwendet, um dieses auf routes.php

Route::get('{username}', '[email protected]_public'); 

in UserController.php:

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

in meinem 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 

Ich versuche, die avatar und name jetzt zu zeigen. Aber es funktioniert nicht für mich. Ich bekomme diesen Fehler -

Bitte helfen Sie mir. Danke

+1

Warum verwenden Sie 'Auth :: user()' in Ihrer Ansicht, wenn Sie den Benutzer bereits an die Ansicht als '$ user' übergeben? Außerdem ist das Ergebnis von 'Auth :: user()' null (d. H. Kein Objekt), wenn sie nicht angemeldet sind. Sie müssen 'Auth :: check()' verwenden, bevor Sie versuchen, den Benutzer zu verwenden. –

+0

Sie müssen die Benutzerdetails aus der Datenbank abrufen, anstatt 'Auth :: user()' zu verwenden, was für den aktuell angemeldeten Benutzer gilt. – Bert

+0

Ich sagte schon, ich bin Neuling mit dem Laravel. Deshalb habe ich um Hilfe gebeten. Und bitte lesen Sie den Titel noch einmal. Ich versuche ein öffentliches Profil ohne Login zu erstellen. Ich möchte nur Benutzername in URL übergeben und die öffentlichen Details dieses Benutzers erhalten. –

Antwort

0

Sie können Auth::user() nicht anrufen, um Gastdetails zu erhalten, es funktioniert nicht so. Auth::user ruft einen authentifizierten Benutzer auf.

Sie erhalten diesen Fehler, weil das Ergebnis Auth::user()null ist, weil keine Authentifizierung stattgefunden hat. Sie versuchen also, nach Eigenschaften auf einem null Wert zu suchen.

Wenn Sie Daten für einen Gastbenutzer abrufen möchten, ist es besser, wenn Sie einfach so etwas wie User::where('username', 'myguestusername')->first() aufrufen, vorausgesetzt, dass Sie tatsächlich die Tabelle users verwenden.

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

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

Da Ihre Route {username} als Parameter anfordert, müssen Sie auch sicherstellen, dass Sie es zu Ihrem profile_public Methode übergeben, wie oben gezeigt:

Es ist in Ihrem UsersController gehen sollte. Auf diese Weise Ihr Anruf an User Modell weiß, was zu suchen ist.

+0

Glaubst du, es ist eine Antwort auf mein Problem? Ich frage nicht nur, warum ich den Fehler bekomme, ich suche nach einer Lösung, wie ich Benutzerinformationen anzeigen kann, die ich öffentlich sein möchte, wie Facebook-Profil (wenn du etwas öffentlichkeitswirksam veröffentlichst, sieht es jeder) –

+1

Diese Gemeinschaft gibt es nicht, um Ihnen nur die Antwort zu geben. Es erfordert, dass Sie Ihr Bestes tun, um selbst nach der Antwort zu suchen und darüber nachzudenken, was Sie offensichtlich nicht getan haben. Sie werden keine Hilfe mehr bekommen, bis Sie gelesen haben, was wir sagen. In dem Fall habe ich Ihnen jedoch die sehr offensichtliche und einfache Antwort gegeben. –

+0

Sie haben gerade einige Male geantwortet und bearbeitet. Also, ich denke, diese Community soll Neulingen helfen. Aber ich bin sicher, wer immer auf eine Frage antwortet, es ist am besten, wenn sie die Frage vollständig lesen. Und ja, ich habe es versucht. Ansonsten kann ein Neuling nicht einmal das schaffen, was ich oben erstellt habe! : P –

Verwandte Themen