2016-04-13 67 views

回答

0

你應該有兩條路線來處理表單。其中一個使用GET作爲HTTP動詞並顯示錶單,另一個使用POST並處理表單。我將用一個使用表單來更新用戶細節和兩個簡單​​路由定義的例子來說明。

表單視圖,讓我們把它在resources/view/formsuser_details.blade.php和存儲,可以是這樣的:

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

現在你應該定義了兩個途徑:一個是顯示的形式,另一種處理形式。下面的代碼中的註釋解釋的邏輯:

// 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); 
}); 

有了這樣的處理形式和重定向回自動意味着當回擊你總是要回Route::get定義,只是給出了一個單獨的路徑表單,並且瀏覽器不會提示您需要重新提交表單的消息。

+0

感謝您的回答! 首先,我們談論Laravel 4,但這可能並不重要。 問題是:如果通過get獲得刀片的第一個視圖,我立即在幾秒鐘內確認該表單,因此我收到錯誤消息。 – user2588688

+0

我不知道我關注。如果您在顯示1秒或1分鐘後提交表格,這應該沒有關係。這可能是特定於您的代碼的東西,所以請編輯您的問題以包含與問題相關的代碼。 – Bogdan

+0

我不這麼認爲。也許它是一個插件或其他類似的東西... 我會更新問題 – user2588688

相關問題