【问题标题】:Laravel same validatorLaravel 相同的验证器
【发布时间】:2020-02-29 18:12:40
【问题描述】:

我的情况是更改密码选项。我已经在对象$pass 中有当前密码。我想针对文本框表单输入 current_password 验证此 $pass 以继续为用户创建新密码。如何使用相同的验证器进行验证。抱歉,我是 laravel 新手。

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

没用。

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    因为same:用于确保当前字段的值与规则参数定义的另一个字段相同(not object)。所以你不能使用这个功能看看下面这个示例代码。

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

    上面的代码将检查当前电子邮件字段是否与 old_email 字段相同。 所以我想你可以简单吗

    在你的句柄控制器函数中假设

    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 Validation same

    【讨论】:

    • 其实我的情况不同。这一项用于更改密码选项。我已经在对象 $pass 中有当前密码。我想根据文本框输入 current_password 验证此 $pass 以继续为用户创建新密码。
    • 如果您想要什么,请告诉我。所以用户在 current_password 文本字段中输入当前密码,然后用户单击更改密码按钮,这将为用户创建新密码(显示创建新密码表单)?我说的对吗?
    • 是的..我已经在 $pass 变量中有旧密码。我想在单击更改密码按钮时根据 current_password 值验证此 $pass。
    • 感谢您提供的信息。我没有意识到这一点。它帮助我解决了它。
    • 有没有类似功能的验证器?
    【解决方案2】:

    如果您已经将密码存储在 $pass 中,只需在请求中注入 $pass 并使用其字段代替例如

    $request->request->add(['password_old' => $pass]);
    

    然后,您可以像这样验证它

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-03
      • 2014-05-20
      • 1970-01-01
      • 1970-01-01
      • 2017-04-29
      • 2020-04-22
      • 2018-12-30
      • 2020-01-16
      相关资源
      最近更新 更多