В моей (symfony 3.4) форме я хочу проверить поле в зависимости от того, установлен ли флажок в той же форме. Я пытался использовать группы проверки, но поле никогда не проверялось.
Это тип формы, который я использую:
class DummyType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('createAccount', CheckboxType::class)
->add('password', PasswordType::class, [
'constraints' => [new NotBlank()],
'validation_groups' => ['password']
])
->add('submit', SubmitType::class)
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'validation_groups' => function (FormInterface $form) {
$data = $form->getData();
if ($data['createAccount'] === true) {
return ['Default', 'password'];
}
return ['Default'];
}
]);
}
}
А вот действие по созданию формы:
/**
* @Route("/debug/form")
* @param Request $request
*
* @return \Symfony\Component\HttpFoundation\Response
*/
public function formAction(Request $request)
{
$form = $this->createForm(DummyType::class, null, ['action' => '/debug/form']);
$form->handleRequest($request);
$message = '';
if ($form->isSubmitted() && $form->isValid()) {
$message = 'Form submitted successfully';
}
return $this->render('@App/Debug/debug.html.twig', ['form' => $form->createView(), 'message' => $message]);
}
Установка флажка ничего не меняет. Форма всегда будет подтверждена. Я предполагал, что указание таких групп проверки приведет к удалению поля password
из групп по умолчанию (что, по-видимому, имеет место, поскольку проверка для этого поля полностью завершена) и добавление его only к password
группа. Это не тот случай, или есть какой-либо другой способ проверки поля password
, если флажок установлен?