登録フォームをつくるときによく出てくる、パスワード入力、パスワード確認を作ってみます。YiiのValidatorに含まれていますのでモデルのrulesメソッドに一行記述するだけ簡単に実装できます。
Modelを作成
今回作るモデルはActiveRecordを継承せずに、CFormModelを継承しておきます。
class RegistForm extends CFormModel {
public $username;
public $email;
public $password;
public $verifypassword;
public function rules() {
return array(
// username and password are required
array('username, email, password, verifypassword', 'required'),
array('email', 'email'),
array('password', 'compare', 'compareAttribute' => 'verifypassword'),
array('verifypassword', 'length', 'min'=>'8', 'max'=>'20'),
array('username', 'length', 'max' => 8),
);
}
ユーザー名、メールアドレス、パスワード、パスワード確認のみの簡単なルールが設定されています。パスワード確認はこの部分となります。
array('password', 'compare', 'compareAttribute' => 'verifypassword'),
項目名「password」にcompareバリデーターを設定し、比較属性に「verifypassword」を設定します。たったこれだけ。
main.phpで言語設定「’language’ => ‘ja’」にしていれば日本語でエラーメッセージ「パスワードは正確に繰り返してください。」と表示されるようになります。