private function checkFormBuilderDeps(\Symfony\Component\Form\FormBuilder $builder, array &$elements, array &$requirments) { if ($builder->getCompound()) { $type = $builder->getType(); if ($type instanceof \Symfony\Component\Form\Extension\DataCollector\Proxy\ResolvedTypeDataCollectorProxy) { $type = $type->getInnerType(); } if (!$type instanceof \Symfony\Component\Form\Extension\Core\Type\ChoiceType) { foreach ($builder->all() as $child) { $this->checkFormBuilderDeps($child, $elements, $requirments); } } } $options = $builder->getOptions(); if (isset($options['sf_form_dynamic'])) { foreach ($options['sf_form_dynamic'] as $and) { foreach ($and as $_name => $values) { $requirments[$_name] = true; } } $elements[$builder->getName()] = $options['sf_form_dynamic']; } }