我成功插入,读取和删除了记录 执行基本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>
答案 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覆盖。创建或销毁资源是 不安全重复,不安全执行的操作 推测性地,不应该缓存。没有额外的 他们需要特殊的语义。
所以基本上没有任何好处。