2010-12-19 14 views
1

私のCakePHPアプリケーションでは、a kind previous suggestionのおかげで、モデルレベルでフォームを検証するPersistantValidationプラグインをセットアップしました。このプラグインは基本的に、基本となるページ(例: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コンポーネントも適切に設定され、それは、同じコントローラでログイン()関数の中だけで正常に動作するので、含まれています。このコードを実行すると、何も起こりません。部分的なリダイレクトはありませんが、良いですが、エラーは表示されません。また、エラーはregister.ctpビューに表示されます。つまり、検証自体に問題はありません。

誰にもアイデアはありますか?

+0

クイックメモ:パスワードのモデル全体は必要ありません。 Userモデルには 'generatePassword'関数しかありません。 – RabidFire

+0

パスワードが二重にハッシュされていないことを確認してください:) –

+0

あなたのユーザーモデルのコードを投稿できますか? – infinity

答えて

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