php - 如何正确发送 PUT/UPDATE 请求到 Laravel 中的控制器
问题描述
因此,我目前正在尝试对我的用户个人资料进行更改密码功能,但我有一些关于PUT
/UPDATE
请求正确到达我的UserController的问题。
根据 Laravel 文档,我只需要在表单元素下方添加@csrf
和@method('PUT')
下方,但是当在控制器中发出转储请求时,我可以看到请求到达了我的控制器中的函数,但在提交时它不需要必要的字段。
profile.blade.php
<form method="POST" action="{{route('update-password')}}">
@csrf @method('PUT')
<div class="form-group row">
<label for="old_password" class="col-md-2 col-form-label">{{ __('Current password') }}</label>
<div class="col-md-6">
<input id="old_password" type="password" class="form-control" required autofocus >
</div>
</div>
<div class="form-group row">
<label for="new_password" class="col-md-2 col-form-label">{{ __('New password') }}</label>
<div class="col-md-6">
<input id="new_password" type="password" class="form-control" required autofocus >
</div>
</div>
<div class="form-group row">
<label for="password_confirm" class="col-md-2 col-form-label">{{ __('Confirm password') }}</label>
<div class="col-md-6">
<input id="password_confirm" type="password" class="form-control" required autofocus>
</div>
</div>
<div class="form-group login-row row mb-0">
<div class="col-md-8 offset-md-2">
<button type="submit" class="btn btn-primary">
{{ __('Submit') }}
</button>
</div>
</div>
</form>
控制器.php
public function updatePassword(Request $request){
$this->validate($request, [
'old_password' => 'required',
'new_password' => 'required|confirmed',
'password_confirm' => 'required'
]);
$user = User::find(Auth::id());
if (!Hash::check($request->current, $user->password)) {
return response()->json(['errors' => ['current'=> ['Current password does not match']]], 422);
}
$user->password = Hash::make($request->password);
$user->save();
return $user;
}
目前,当提交字段时,它只提交
_token: UcJwliogSngHauWCNuDvRtRnZy8NP4lrQeNoZQGG
_method: PUT
并且只是将重定向(302)返回到个人资料页面。
它应该提交所有 3 个字段。
解决方案
您可以通过向输入添加name
属性来发送数据。为了让您的所有输入正常工作,您需要添加name
所有输入。它的一个例子是这样的:
<input id="old_password" name="old_password" type="password" class="form-control" required autofocus >
请注意,id 不足以发送数据。对于您需要的输入标识name
。
推荐阅读
- node.js - NodeJS (express) + Socket.io - 各种错误
- javascript - JavaScript:如何映射两个对象以获得将第一个对象的 ID 映射到另一个对象的名称的输出?
- html - div下拉菜单不显示
- android - 如何通过 Camera2/CameraX API 使用最广角镜头
- algorithm - 从最小生成树中创建 N-Clusters?
- c++ - 在windows上读写带有UTF-8文件名的二进制文件(使用QT)
- google-sheets - 谷歌表格预设条件格式规则?
- javascript - Uncaught (in promise) TypeError: o is not a function at this.setState
- node.js - Powershell:如何为包含 Unicode 字符的路径执行命令?
- google-cloud-platform - 如何将来自 webhook 的消息存储到 bigquery