diff --git a/forms/ConfirmedPasswordField.php b/forms/ConfirmedPasswordField.php index 257f3d023..0a404590a 100644 --- a/forms/ConfirmedPasswordField.php +++ b/forms/ConfirmedPasswordField.php @@ -264,6 +264,7 @@ class ConfirmedPasswordField extends FormField { } else { if($value || (!$value && $this->canBeEmpty)) { $this->value = $value; + $this->confirmValue = $value; } } @@ -273,7 +274,7 @@ class ConfirmedPasswordField extends FormField { ->setValue($this->value); $this->children->fieldByName($this->getName() . '[_ConfirmPassword]') - ->setValue($this->value); + ->setValue($this->confirmValue); } return $this; diff --git a/tests/forms/ConfirmedPasswordFieldTest.php b/tests/forms/ConfirmedPasswordFieldTest.php index ec22fb600..d4522a3ec 100644 --- a/tests/forms/ConfirmedPasswordFieldTest.php +++ b/tests/forms/ConfirmedPasswordFieldTest.php @@ -71,5 +71,25 @@ class ConfirmedPasswordFieldTest extends SapphireTest { )); $this->assertFalse($field->validate($validator)); } + + public function testFormValidation() { + $form = new Form( + new Controller(), + 'Form', + new FieldList($field = new ConfirmedPasswordField('Password')), + new FieldList() + ); + + $form->loadDataFrom(array( + 'Password' => array( + '_Password' => '123', + '_ConfirmPassword' => '999', + ) + )); + + $this->assertEquals('123', $field->children->first()->Value()); + $this->assertEquals('999', $field->children->last()->Value()); + $this->assertNotEquals($field->children->first()->Value(), $field->children->last()->Value()); + } }