Я написал функцию, которая имеет две формы, которые активируются отдельно, сохраняя одну и ту же сущность. Первый активируется для поля ввода, а второй - для случайно сгенерированного поля.
Но когда я нажимаю "Отправить", он активирует обе формы одну за другой. Если использовать условия, чтобы предотвратить это, но мне кажется, что это не работает.
Мой код:
$id = $request->get('id');
$user = $this->container->get('account')->getUserRepository()->find($id);
$form1 = $this->createFormBuilder()
->add('password', PasswordType::class, array(
'label' => 'Enter New Password',
'attr' => ['class'=>'form-control']))
->add('save', SubmitType::class, array(
'label' => 'Send', 'attr' => ['class' => 'btn btn-primary action-save']
))
->getForm();
$form2 = $this->createFormBuilder()
->add('password', PasswordType::class, array(
'label' => 'Generate New Password',
'disabled'=> true,
'attr' => ['class'=>'form-control']))
->add('save', SubmitType::class, array(
'label' => 'Send',
'attr' => ['class' => 'btn btn-primary action-save']
))
->getForm();
$form1->handleRequest($request);
if($form1->isSubmitted() && $form1->isValid()) {
$this->addFlash(
'notice',
'You successfully changed the password!'
);
$data = $form1->getData();
$new_password = $data['password'];
$encoder = $this->container->get('security.encoder_factory')->getEncoder($user);
$new_pwd_encoded = $encoder->encodePassword($new_password);
$oneTimePsw = '';
$user->setPassword($new_pwd_encoded);
$manager = $this->getDoctrine()->getManager();
$manager->flush();
}
$form2->handleRequest($request);
if($form2->isSubmitted() && $form2->isValid()) {
$this->addFlash(
'notice',
'Password is successfully generated!'
);
$data = $form2->getData();
$new_password = $data['password'];);
$new = $this->get('member.account')->generateRandomPassword();
$oneTimePsw = '';
$user->setPassword($new);
$manager = $this->getDoctrine()->getManager();
$manager->flush();
}
return $this->render('@AdminTemplates/admin/reset_password.html.twig', array(
'form1' => $form1->createView(),
'form2' => $form2->createView()
));
My twig
<div id="setPassword" style="display:none;">
{{ form_start(form1) }}
{{ form_end(form1) }}
</div>
<div id="generatePassword" style="display:none;">
{{ form_start(form2) }}
{{ form_end(form2) }}
</div>