Laravel同一验证器

4

我的问题是关于更改密码选项。我已经有了当前密码的对象$pass。我想要验证这个$pass是否与文本框表单输入的当前密码匹配,以便继续为用户创建新密码。如何使用相同的验证器进行验证?抱歉,我是laravel新手。

$rules = array('password_current' => "required|same:$pass");

无法正常工作。

2个回答

9

same: 是用来确保当前字段的值与规则参数中定义的另一个字段的值(非对象)相同。因此,您不能使用此函数,请看下面的示例代码。

$data = Input::all();
$rules = array(
    'email' => 'required|same:old_email',
);

上面的代码将检查当前电子邮件字段是否与旧电子邮件字段相同。 因此,我认为你可以用简单的if else语句。 在你的处理控制器函数中假设。
public function handleCheck(){

$current_password = Input::get('current_password');
$pass = //your object pass;
if($current_password == $pass){
  // password correct , show change password form
}else{
 //  password incorrect , show error
}
}

如果它起作用了,请让我知道。请参见Laravel验证same规则


实际上,我的情况有所不同。这个是用于更改密码选项的。我已经在对象$pass中拥有当前密码。我想要验证这个$pass与文本框输入的current_password是否匹配,以便继续为用户创建新密码。 - Nivin V Joseph
请告诉我这是否是您想要的。用户在“current_password”文本字段中输入当前密码,然后单击“更改密码”按钮,该按钮将为用户创建新密码(显示创建新密码表单),对吗? - Dark Cyber
是的,我已经在$pass变量中有旧密码。当点击更改密码按钮时,我想验证这个$pass与current_password值是否匹配。 - Nivin V Joseph
谢谢您提供的信息。我之前不知道这个问题,但是这些信息帮助我解决了它。 - Nivin V Joseph
有没有类似功能的验证器? - Khalil Laleh

1
如果您已经将密码存储在$pass中,只需将$pass注入请求并使用其字段即可,例如。
$request->request->add(['password_old' => $pass]);

然后,您可以像这样验证它:
$rules = array('password_current' => "required|same:password_old");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接