2017-03-18 31 views
0

我已經successfuly插入,讀取和刪除的記錄,而 執行基本凝乳operation.Now我試圖更新它成功插入database.But /編輯記錄 記錄不是點擊更新按鈕後 更新,它顯示了以前的紀錄,因爲它是使用補丁的方法,而不是更新的記錄(豆腐操作)

route.php

Route::get("edit/{id}" , "[email protected]"); 
Route::patch("update/{id}" , "[email protected]"); 

testing.php

// this is edit function 

public function edit($id) 
{ 
    $user=curd::find($id); 
    return view("update",compact("user")); 
} 

// this is update function 


public function update(Request $request, $id) 
{ 
    $user = curd::find($id); 
    $user->update(Request::all()); 
    return redirect("read"); 
} 

update.blade.php

<html> 
    <head> 

     <title>update</title> 
    </head> 
<body> 
<!-- Here We Use Patch Method !--> 

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

{{Form::label('name','name')}} 
{{Form::text('Name')}} 

{{Form::submit('Update')}} 
{{Form::close()}} 


</body> 

</html> 

回答

0

爲什麼要使用補丁更新內容?

由於laravel docs

HTML表單不支持PUT,PATCH或DELETE操作。所以,當 定義從HTML 窗體調用的PUT,PATCH或DELETE路由時,您需要向表單添加一個隱藏的_method字段。與_method字段發送的 值將被用作HTTP請求 方法

並且由於關於爲什麼PUT,DELETE更多的資源,PUSH不<form>標籤允許的。

我覺得this answer更簡單讓到底爲什麼表單標籤只允許GET,POST HTTP請求

GET和POST有一個明確的內容中立的理由。 GET以 以可安全重複的方式檢索URL的內容,並且可能緩存爲 。 POST是以一種對 重複,推測性執行或緩存不安全的方式執行某些操作。

PUT或DELETE沒有類似的基本原理。它們都是POST完全覆蓋的 。創建或銷燬資源是 操作不重複,不安全執行 推測,不應該被緩存。沒有額外的 他們需要特殊的語義。

所以基本上沒有任何好處。

+0

我仍然面臨這個問題,更新函數沒有更新記錄,它仍然顯示以前的記錄,因爲它是。 –

+0

你不能使用路由補丁來更新表單; – hassan