コード例 #1
0
 public function buildForm(FormBuilderInterface $builder, array $options)
 {
     $builder->add('oldPassword', 'password', ['required' => false])->add('newPassword', 'repeated', ['required' => false, 'type' => 'password', 'first_options' => ['label' => 'New Password'], 'second_options' => ['label' => 'Confirmation']]);
     $builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) {
         $data = $event->getData();
         if (!$data instanceof ChangePassword) {
             throw new \RuntimeException('ChangePassword instance required.');
         }
         $oldPassword = $data->getOldPassword();
         $newPassword = $data->getNewPassword();
         $form = $event->getForm();
         if (!$oldPassword || !$newPassword || count($form->getErrors(true))) {
             return;
         }
         $user = $data->getUser();
         if (!$this->handler->isPasswordValid($user, $oldPassword)) {
             $form = $event->getForm();
             $form->get('oldPassword')->addError(new FormError('Previous password is not valid.'));
             return;
         }
     });
 }