2010-11-30 34 views
0

私は認証コンポーネントを使用するアプリケーションを持っています。 Logedinメンバーは、ユーザーモデルに検証ルールがない限り、データを変更できます。モデルlogedinに配列$ validateを追加すると、ユーザーはデータベースにデータを送信できません。CakePHPの認証と検証

usersという名前の1つのmysqlテーブルを使用します。言い換えれば

この作品が、私はサインアップビューで

 
<?php 
class User extends AppModel { 
var $name = 'User'; 
?> 

を検証していない。しかし私はこのような検証を追加する場合:秘密でサインアップビューは動作しますが、ユーザーが

 
<?php 
class User extends AppModel { 
var $name = 'User'; 
var $validate = array(
    'email' => array(
    'email' => array('rule' => 'email','required'=>true,'message' => 'Enter proper mail') 
) 
); 
} 
?> 

検証エリアはデータベースにデータを入力できません。

+0

どのバージョンを使用していますか? 1.2または1.3?それはどんなエラーを投げているのですか? – RSK

+0

私はケーキのフレームワークv 1.2を使用します –

答えて

1

私の推測は:requiredtrueに設定しているために発生しています。

これにより、Userモデルのデータを送信したときに、emailキーを設定する必要があるという規則が適用されます。したがって、これは明らかに電子メールキーを持っているサインアップフォームで機能します。一方、秘密の領域で使用しているフォームには、おそらく電子メールフィールドがありません。

はちょうどあなたの検証ルールから「必要な」条件を削除します。

'email' => array(
    'email' => array(
     'rule' => array('email'), 
     'message' => 'Please enter a valid email', 
    ), 
), 

はこれがあなたのために働くなら、私に教えてください。

+0

あなたは正しいです。必要なパラメータを削除する必要があります。 RabidFireに感謝します。 –

+0

>一方、シークレットエリアで使用しているフォームには、おそらく電子メールフィールドがありません。それも正しいです。 –

+0

私はこれをhttp://pastebin.com/WgeLhqXBのように解決しました。 –