我是这样试的:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class ChangePasswordRequest extends FormRequest
{
...
public function rules()
{
return [
'old_password' => 'required|confirmed',
'password' => 'required|min:6',
'password_confirmation' => 'required|min:6|same:password'
];
}
}
我已经正确输入了旧密码,但仍然有一条消息:
旧密码确认不匹配。
我怎样才能解决这个问题?
4条答案
按热度按时间vybvopom1#
你能做的就是制定一个规则。下面的规则可能会解决你的问题。
当前密码.php
在你的控制器里,你可以做这样的东西:
sg3maiej2#
(Laravel v7.x)您正在查找名为“密码”的规则:
您还可以使用规则的第一个参数指定身份验证保护,如下所示:
这里是文档:https://laravel.com/docs/7.x/validation#rule-password
j0pj023g3#
根据文件:
Hash::check()
* 函数,用于检查用户输入的旧密码是否正确。如果正确输入了旧密码,则它将返回true,您可以相应地添加逻辑
new_password
* 和 *new_confirm_password
* 相同,您可以在表单请求中添加验证,如下所示:e0uiprwp4#
“确认”规则并不像您期望的那样。
如果你在一个字段
old_password
上设置confirmed
规则,它会寻找表单输入old_password_confirmation
,并检查它的值是否等于old_password
的值。它基本上是same:field
的逆,带有预定义的预期名称(它会将_confirmation
添加到原始名称)。在您的情况下,您可以像这样使用它,它将执行与当前
password_confirmation => same:password
规则相同的功能:对于您想要实现的目标,您可以创建自己的验证规则或(在我看来更好)检查输入的密码在控制器中是否正确。