2017-01-21 6 views
3

Ich bin neu in Laravel. Mit Version 5.3 und versucht zu suchen, aber nicht sehen, was ich falsch mache. Ich bekomme immer eine "Undefinierte Variable: Benutzer" in meiner Ansicht. Ich mache auch Formmodellbindung. Die Modellbindung funktioniert ordnungsgemäß, wenn Sie die URL manuell eingeben. Kann einfach nicht auf den Link klicken, um die Bearbeitungsansicht aufzurufen.Laravel undefinierte Variable in Sicht

Meine Routen:

Route::get('/profile/edit/{id}', '[email protected]'); 
Route::post('/profile/edit/{id}', '[email protected]'); 

Mein Controller:

public function getEdit($id){ 

    $user= User::findOrFail($id); 
    return view('profile.edit', compact('user')); 
} 

Meine Ansicht:

<li><a href="{{ url('/profile/edit', $user->id) }}">Update profile</a></li> 

Meine Form:

{!! Form::model($user,['method' => 'POST', 'action'=>  ['[email protected]', $user->id]]) !!} 

Antwort

1
public function getEdit($id){ 

    $user= User::findOrFail($id); 
    return view('profile.edit', ['user' => $user]); 
} 

public function postEdit($id){ 

    $user= User::findOrFail($id); 
    return view('profile.edit', ['user' => $user]); 
} 
+0

Versucht, dass aber immer noch das gleiche Problem. – Slillz

+0

können Sie bestätigen, dass Sie tatsächlich die getEdit-Methode verwenden, um Ihre Ansicht zu rendern, und nicht die postEdit-Methode? – Joe1992

+0

Ja auf meinen Routen ruft es den getEdit. Gibt es einen anderen Weg, es zu bestätigen, aber ich bin mir ziemlich sicher. – Slillz

0

Meiner Meinung nach ist die Aussage in Ihrer Ansicht

<li><a href="{{ url('/profile/edit', $user->id) }}">Update profile</a></li> 

das Problem verursacht. Sie können dies bestätigen, indem Sie auf die URL in der Adressleiste klicken, nachdem Sie auf den Link Update profile geklickt haben.

Versuchen Sie es zu diesem

<li><a href="{{ action('[email protected]', $user->id) }}">Update profile</a></li> 
+0

Ich habe es geändert, aber ich bekomme immer noch undefiniert Variable: Benutzer. Nach dem Klicken sehe ich "myapp.dev/profile/edit", aber die Variable wird nicht angezeigt. – Slillz

+0

Das ist dann das Problem! Sie sehen 'myapp.dev/profile/edit' als URL; aber eigentlich sollte es "myapp.dev/profile/edit/1" sein (unter der Annahme, dass es sich um eine Benutzer-ID handelt). – linuxartisan

+0

Korrigieren. Mir ist klar, dass das von Anfang an das Problem ist. Ich übergebe die Variable, wie Sie von meinem Controller und Ansicht sehen können, aber es wird nicht in der URL angezeigt – Slillz

0

Versuchen Sie, diese für Pass Datenfeld in Sicht

public function getEdit($id){ 
    $data['user'] = User::findOrFail($id); 
    return view('profile.edit')->withdata($data); 
} 

in Ansichtsseite zu ändern versuchen, $ data

{{ print_r($data) }} 
+0

Versuchte das und bekam eine Fehlermeldung ...Verwendung von undefiniertem Konstantennamen - angenommener 'Name' – Slillz

+0

im Modell definiert Tabellennamen und Primärschlüssel. –

+0

Nicht sicher, was du meinst. Ich habe bereits ein "Benutzer" -Modell. – Slillz

0

Bearbeiten Sie Ihre getEdit drucken Methode

public function getEdit($id){ 
    $user= User::findOrFail($id); 
    dd($user); 
    return view('profile.edit', compact('user')); 
} 

Überprüfen Sie, ob eine Datenbenutzervariable vorhanden ist.

+0

Ja, einige Daten werden in der Ansicht in einem Array angezeigt. – Slillz

+0

Ich denke, dass Sie den folgenden Link auf einer anderen Seite anzeigen. Meine Sicht:

  • Update profile
  • Können Sie bitte überprüfen, dass $ Benutzer an diese Ansicht übergeben wird. –

    Verwandte Themen