【问题标题】:CakePHP Validation Question with PluginCakePHP 插件验证问题
【发布时间】:2010-12-19 15:40:29
【问题描述】:

感谢a kind previous suggestion,在我的 CakePHP 应用程序中,我设置了 PersistantValidation 插件来在模型级别验证我的表单。该插件本质上使您可以在部分上使用模型验证,而无需将其重定向到底层页面(例如 register.ctp 视图或 login.ctp 视图)。

验证对登录表单很有效,但由于某种原因它在用户注册表单上无法正常工作。

控制器如下所示:

function register() {
  if(!empty($this->data)) {
   $name = $this->data['User']['name'];
   $email = $this->data['User']['email'];
   $password = $this->Password->generatePassword();
   $this->data['User']['password'] = $this->Auth->password($password);
   $this->User->create();
   if($this->User->save($this->data)) {
    $this->Session->setFlash(__('Your account has been created!', true));
    $this->redirect(array('controller' => 'users', 'action' => 'offers'));
   } else {
    $this->redirect($this->referer());
   }
  }
 }

PresistentValidation 组件也被正确设置和包含,因为它在同一个控制器的 login() 函数中工作得很好。当我运行这段代码时,什么也没有发生。没有远离部分的重定向,这很好,但错误不会出现。此外,错误确实显示在 register.ctp 视图中,这意味着验证本身没有问题。

有人有什么想法吗?

【问题讨论】:

  • 快速提示:您可能不需要完整的密码模型。您可以在 User 模型中使用 generatePassword 函数。
  • 确保您没有对密码进行双重哈希 :)
  • 你能发布你的用户模型的代码,更具体地说,你有任何验证代码

标签: php forms validation cakephp


【解决方案1】:
function register() {
    if(!empty($this->data)) {
        $this->data['User']['password'] = $this->Auth->password($password);
        if($this->User->save($this->data)) {
            $this->Session->setFlash(__('Your account has been created!', true));
            $this->redirect(array('controller' => 'users', 'action' => 'offers'));
        } else {
            $this->redirect($this->referer());
        }
    }
}

【讨论】:

    猜你喜欢
    • 2011-07-07
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 2011-10-23
    相关资源
    最近更新 更多