public function testValidator() { $model = new yii\base\DynamicModel(['case', 'field1', 'field2']); $model->addRule('case', PetraBarus\Yii2\SwitchCaseValidator\Validator::class, ['cases' => [1 => [['field1', 'required']], 2 => [['field1', 'compare', 'compareValue' => 'Test']], 3 => [['field1', 'compare', 'compareValue' => 'Value 1'], ['field2', 'email']]], 'default' => [['field1', 'compare', 'compareValue' => 'Value 2'], ['field2', 'compare', 'compareValue' => 'Value 4']]]); $model->case = 1; $model->validate(); $this->assertTrue($model->hasErrors()); $model->field1 = 'Hello World!'; $model->validate(); $this->assertFalse($model->hasErrors()); $model->case = 2; $model->validate(); $this->assertTrue($model->hasErrors()); $model->field1 = 'Test'; $model->validate(); $this->assertFalse($model->hasErrors()); $model->case = 3; $model->validate(); $this->assertTrue($model->hasErrors()); $model->field1 = 'Value 1'; $model->field2 = 'Value 3'; $model->validate(); $this->assertTrue($model->hasErrors()); $model->field2 = '*****@*****.**'; $model->validate(); $this->assertFalse($model->hasErrors()); $model->case = 4; $model->validate(); $this->assertTrue($model->hasErrors()); $model->field1 = 'Value 2'; $model->field2 = 'Value 4'; $model->validate(); $this->assertFalse($model->hasErrors()); }
public function actionRecoveryHandler() { $arr['katalaluan'] = $_POST['katalaluan']; $arr['pengesahan_katalaluan'] = $_POST['pengesahan_katalaluan']; $model = new \yii\base\DynamicModel($arr); $model->addRule(['katalaluan', 'pengesahan_katalaluan'], 'required', ['message' => 'Medan {attribute} ini wajib diisi'])->addRule('katalaluan', 'compare', ['compareAttribute' => 'pengesahan_katalaluan', 'message' => 'Katalaluan dan Pengesahan Katalaluan Mestilah Sama'])->validate(); $str = $_POST['str']; $app = \app\models\Applicant::findOne(['forgot_pwd' => $str]); if ($model->hasErrors()) { return $this->render('pwd_recovery', ['errors' => $model->getErrors(), 'app' => $app]); } else { $app->password = $_POST['katalaluan']; $app->confirm_password = $app->password; // need to re-arrange on rules $app->com_state2 = $app->com_state; if ($app->validate()) { $app->forgot_pwd = null; $app->save(); \Yii::$app->session->setFlash('msg', 'Katalaluan telah berjaya ditukar'); return $this->goHome(); } else { //var_dump($app->getErrors()); return $this->render('pwd_recovery', ['errors' => $app->getErrors(), 'app' => $app]); } } }