У меня есть альтернатива: если вы можете определить условие до привязки формы, вы можете просто переопределить список групп проверки по умолчанию при создании формы.
В моем случае у меня есть объект заказа в сеансе, который обновляется на нескольких страницах формы.
Заказ может быть «Доставка» или «Самовывоз», и если доставка была выбрана на предыдущем экране, мне нужно проверить детали адреса на этом экране:
if ($order->getOrderType() == "Delivery")
{
$validationGroups = array('step3', 'delivery');
}
else
{
$validationGroups = array('step3');
}
$formType = new Form\Order3Type();
$form = $this->createForm($formType, $order, array("validation_groups" => $validationGroups));
$form->bindRequest($request);
Если ваше условие в форме, а не в сеансе, вы всегда можете просто извлечь значение прямо из объекта запроса.