【问题标题】:Cakephp isUnique is not working properlyCakephp isUnique 无法正常工作
【发布时间】:2014-11-18 09:13:46
【问题描述】:

如果在用户创建表单时仅存在唯一性验证错误并给出“页面未正确重定向”错误,则 isUnique 验证不起作用。 型号代码为:

class User extends AppModel {
    public $validate = array(
        'username' => array(
            'notEmpty' => array(
                'rule' => array('email'),
                'message' => 'Please supply a valid email address.'
            ),
            'isUnique' => array(
                'rule' => 'isUnique',
                'message' => 'This email has already been taken.'
            )
        ),
        'password' => array(
            'min' => array(
                'rule' => array('minLength', 3),
                'message' => 'Password must be at least 3 characters.'
            ),
            'required' => array(
                'rule' => 'notEmpty',
                'message' => 'Please enter a password.'
            ),
        ),
        'cpassword' => array(
            'required' => 'notEmpty',
            'match' => array(
                'rule' => 'validatePasswdConfirm',
                'message' => 'Passwords do not match'
            )
        )
    );
}

当我输入不匹配的密码时,它会给出“密码不匹配”的错误,并且还会给出错误“此电子邮件已被占用”。如果用户表中已经存在用户名,但问题是当我只输入已经存在的用户名并输入匹配密码时,它会转到错误页面“页面未正确重定向”。 我该如何解决这个问题? 提前致谢。

【问题讨论】:

  • 如果我从模型中删除 isUnique 验证,即使这样我也会进入“页面未正确重定向”页面。
  • 我也在这里问过这个问题:stackoverflow.com/questions/27012195/…
  • 其实就是注销当前登录用户.....
  • 您能发布匹配的控制器代码吗?通常,如果验证不起作用,您应该被重定向到编辑表单并显示错误消息,但您的控制器中的重定向可能在某处出现错误。
  • 我还建议您在不使用 Auth 组件的情况下测试验证。这样你就可以更清楚地看到问题出在哪里了。

标签: cakephp


【解决方案1】:

如果您在 beforeFilter 中将$this->Auth->login() 用于任何条件,请将其删除并使用 !empty($this->Auth->user('id')) 而不是 $this->Auth->login() 用于 beforeFilter 中的条件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多