【发布时间】:2017-12-07 07:48:21
【问题描述】:
我目前正在处理用户可以更改其密码的个人资料页面。我在 UserController 中创建了一个新函数changePassword()
public function changePassword(Request $request, User $employee) {
$validator = Validator::make($data, [
'password' => 'required|string|min:6|confirmed',
'password_confirmation' => 'required|string|min:6|same:password'
]);
if ($validator->fails()) {
Session::flash('error', "Fill-out the form correctly. Try again!");
return redirect()->back()->withErrors($validator);
}
$employee->password = bcrypt($request->password);
$employee->save();
return view('users.show', ['employee'=>$employee]);
}
我在 web.php User 模型的资源路由上面创建了这个新路由
Route::put('users/{user}', 'UserController@changePassword')->name('users.changePassword');
每次单击提交按钮时,我都会收到MethodNotAllowedHttpException。我认为问题在于路线,但我不确定。除了发送电子邮件的功能之外,是否还有 Laravel 功能,因为我希望用户在不使用电子邮件的情况下更改其密码。谢谢!
这是我的表格
{!! Form::model($employee, ['method'=>'PUT', 'route'=>['users.changePassword', $employee]]) !!}
【问题讨论】:
-
你需要先找到你要更新密码的用户!我的意思是哪个用户正在更新他/她的密码!
-
您可以使用:
$id = \Auth::user()->id; $employee = User::find($id);这样您就可以获得想要更新密码的用户,这就是您想要的!将此代码放在$employee->password = bcrypt($request->password);行上方,让我知道这是否有效??! -
我认为这是多余的,因为我正在传递我正在更新的对象,我不需要找到它。无论如何,谢谢,我已经通过为更新控制器创建一个新控制器解决了这个问题(这可行,但可能是非常规的)
-
好的,谢谢您的回复! :)
标签: php laravel laravel-5.4