ユーザーを作成および更新するときに、Yiiに基づいてWebアプリケーションにパスワードリピートフィールドが必要です。作成時に両方のフィールドを必須にし、更新時に、ユーザーはこれらのフィールドを空のままにするか(パスワードは同じになります)、新しいパスワードを入力して確認します。どうすれば点在できますか?
12185 次
1 に答える
19
まず、モデルに新しい属性を作成する必要があります(この例ではrepeatpasswordと呼びます)。
class MyModel extends CActiveRecord{
public $repeatpassword;
...
次に、ルールを定義して、既存のパスワード属性と一致するようにする必要があります。
public function rules() {
return array(
array('password', 'length', 'max'=>250),
array('repeatpassword', 'compare', 'compareAttribute'=>'password', 'message'=>"Passwords don't match"),
...
);
}
これで、新しいモデルが作成されたときに、password属性とrepeatpassword属性が一致しない限り、モデルは検証されません。あなたが言ったように、これは新しいレコードを作成するのに問題ありませんが、アップデートで一致したパスワードを検証したくありません。この機能を作成するために、モデルシナリオを使用できます
上記のようにrepeatpasswordルールを変更して、パーマンターを追加します。
...
array('repeatpassword', 'compare', 'compareAttribute'=>'password', 'message'=>"Passwords don't match",'on'=>'create'),
...
あとは、create関数でモデルを宣言するときに、次を使用するだけです。
$model = new MyModel('create');
通常の代わりに:
$model = new MyModel;
于 2012-11-13T17:30:32.907 に答える