add('plainPassword', RepeatedType::class, [ 'type' => PasswordType::class, 'options' => [ 'attr' => [ 'autocomplete' => 'new-password', ], ], 'first_options' => [ 'constraints' => [ new NotBlank([ 'message' => 'Please enter a password', ]), new Length([ 'min' => 12, 'minMessage' => 'Your password should be at least {{ limit }} characters', // max length allowed by Symfony for security reasons 'max' => 4096, ]), new PasswordStrength(), new NotCompromisedPassword(), ], 'label' => 'New password', ], 'second_options' => [ 'label' => 'Repeat Password', ], 'invalid_message' => 'The password fields must match.', // Instead of being set onto the object directly, // this is read and encoded in the controller 'mapped' => false, ]) ; } public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([]); } }