登録フォームをつくるときによく出てくる、パスワード入力、パスワード確認を作ってみます。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’」にしていれば日本語でエラーメッセージ「パスワードは正確に繰り返してください。」と表示されるようになります。