2010-12-19 87 views
1

在我的CakePHP应用程序中,我已经设置了PersistantValidation插件来验证模型级别的表单,这要归功于a kind previous suggestion。该插件实质上使得它可以对部分使用模型验证,而不必将其重定向到底层页面(例如,register.ctp视图或login.ctp视图)。CakePHP验证插件问题

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

控制器看起来是这样的:

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视图,这意味着它不是验证本身的问题。

有没有人有任何想法?

+0

快速提示:您可能不需要整个密码模型。您可以在用户模型中拥有'generatePassword'功能。 – RabidFire 2010-12-20 10:42:38

+0

请确保您不会双重散列您的密码:) – 2010-12-20 12:56:43

+0

您可以发布您的用户模型的代码,以及更具体的验证代码吗? – infinity 2011-09-12 12:02:30

回答

0
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()); 
     } 
    } 
}