表Users
中存储有实体User
此表中的某些字段默认为空。
我需要更新这些字段并设置非空数据。
为此,我尝试在 Laravel 中使用 PATCH
方法:
路由:
Route::patch('users/update', 'UsersController@update');
Controller :
public function update(Request $request, $id)
{
$validator = Validator::make($request->all(), [
"name" => 'required|string|min:3|max:50',
"email_work" => 'email|max:255|unique:users',
"surname" => 'required|string|min:3|max:50',
"tel" => 'required|numeric|size:11',
"country" => 'required|integer',
"region" => 'required|integer',
"city" => 'required|integer'
]);
if ($validator->fails()) {
return response()->json(["message" => $validator->errors()->all()], 400);
}
$user = User::where("user_id", $id)->update([
"name" => $request->name,
"surname" => $request->surname,
"tel" => $request->tel,
"country" => $request->country,
"city" => $request->city,
"region" => $request->region,
"email_work" => $request->email
]);
return response()->json(["user" => $user]);
}
这是否意味着我可以传递任何数据来更新?
我应该将 $id
参数相对地传递给路由和 Controller 吗?
如何在 Laravel 中使用 PATCH 方法的正确处理程序?
最佳答案
使用单一路线:
Route::patch('users/{id}', 'UsersController@update')->name('users.update');
或者使用资源路由:
Route::resource('users', 'UsersController');
如果你想在jQuery.ajax()
中使用:
$.ajax({
method: "post",
url: "{{ url('/users/') }}" + id,
data: {"_method": "PATCH", ...}
...
});
如果你想以html形式使用:
<form method="POST" action="{{ route('users.update',['id' => $id]) }}">
@csrf
@method('PATCH')
</form>
关于php - 如何在 Laravel 中使用补丁请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42313033/