2016-04-13 21 views

Antwort

0

Sie sollten zwei Routen haben, um Formulare zu bearbeiten. Eine, die GET als das HTTP-Verb verwendet und das Formular anzeigt und eines, das POST verwendet und das Formular verarbeitet. Ich werde das anhand eines Beispiels veranschaulichen, das ein Formular verwendet, um die Details eines Benutzers und zwei einfache Routendefinitionen zu aktualisieren.

Die Formularansicht, machen wir es in resources/view/formsuser_details.blade.php und Laden nennen, wie folgt aussehen:

<form action="update-user/{$user->id}" action="POST"> 
    <input type="text" name="name" value="{{ $user->name }}"> 
    <input type="text" name="phone" value="{{ $user->phone }}"> 
    <input type="text" name="email" value="{{ $user->email }}"> 

    <button type="submit">Save</button> 
</form> 

Jetzt sollten Sie zwei Routen definiert haben: eine, die die Form und eine Anzeige, die das Formular verarbeitet. Die Kommentare auf den Code unten erklären die Logik:

// Accessing http://domain.com/update-user/1 from the browser 
// will show the user update form for the user with ID 1 
Route::get('update-user/{id}', function ($id) { 
    // Get the current user details so you can pass them to the view 
    $user = User::find($id); 

    return view('forms.my_form')->with(compact('user')); 
}); 

// Using the same path `update-user/1` but with POST for your 
// form action will match this `Route::post` definition so it 
// will process the submitted form 
Route::post('update-user/{id}', function(Request $request, $id) { 
    $user = User::find($id); 
    $user->fill($request->only('name', 'phone', 'email'); 
    $user->save(); 

    // After you've finished processing the form redirect to 
    // the `update-user/{id}` route path, but since it's 
    // using GET for the redirect it will match the route 
    // definition that shows the form 
    return redirect()->to('update-user/' . $id); 
}); 

eine separate Strecke zu haben, das das Formular verarbeitet und leitet wieder automatisch bedeutet, dass, wenn die Kollision wieder werden Sie immer wieder auf die Route::get Definition gehen werden, die nur die zeigt, Formular, und der Browser wird Sie nicht mit der Nachricht auffordern, dass Sie das Formular erneut einreichen müssen.

+0

Danke für Ihre Antwort! Zuerst sprechen wir über Laravel 4, aber das spielt wahrscheinlich keine Rolle. Das Problem ist: wenn ich über get die erste Ansicht eines Blade bekomme und ich das Formular innerhalb weniger Sekunden sofort bestätige, bekomme ich die Fehlermeldung. – user2588688

+0

Ich bin mir nicht sicher, ob ich folge. Es spielt keine Rolle, ob Sie das Formular 1 Sekunde oder 1 Minute nach der Anzeige absenden. Es könnte sich um etwas handeln, das für Ihren Code spezifisch ist. Bearbeiten Sie daher Ihre Frage so, dass sie den für das Problem relevanten Code enthält. – Bogdan

+0

Das glaube ich nicht. Vielleicht ist es ein Plugin oder etwas ähnliches ... Ich werde die Frage aktualisieren – user2588688

Verwandte Themen