使用Patch方法,不更新记录(curd操作)

时间:2017-03-18 08:12:21

标签: php laravel-5

我成功插入,读取和删除了记录     执行基本CURD操作。现在我正在尝试更新/编辑记录     这是成功插入数据库。但记录不是     单击更新按钮后更新,它显示以前的记录

route.php

Route::get("edit/{id}" , "testing@edit");
Route::patch("update/{id}" , "testing@update");

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'=> 
['testing@update',$user->id]])}}

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

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


</body>

</html>

1 个答案:

答案 0 :(得分:0)

为什么在更新内容时使用补丁?

由于laravel docs

  

HTML表单不支持PUT,PATCH或DELETE操作。所以,什么时候   定义从HTML调用的PUT,PATCH或DELETE路由   在表单中,您需要向表单添加隐藏的_method字段。该   使用_method字段发送的值将用作HTTP请求   方法

并且由于有更多资源可以解释为什么<form>标记中不允许PUT,DELETE,PUSH。

我认为this answer更容易理解为什么确切的表单标记只允许GET,POST HTTP请求

  

GET和POST具有明确的内容中立原理。 GET是   以可重复安全的方式检索URL的内容   可能缓存。 POST是以不安全的方式做某事   重复,推测性地执行或缓存。

     

PUT或DELETE没有类似的理由。他们都   完全被POST覆盖。创建或销毁资源是   不安全重复,不安全执行的操作   推测性地,不应该缓存。没有额外的   他们需要特殊的语义。

     

所以基本上没有任何好处。