Я думаю, что лучшее решение - создать базовый абстрактный тип и позволить вашим типам расширять его. Вот краткий пример:
namespace Acme\Bundle\DemoBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
abstract FooBaseType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
// Add all fields common for your other types.
}
}
Теперь вы можете просто расширить его, добавив пропущенные поля
namespace Acme\Bundle\DemoBundle\Form\Type;
class ExampleType extends FooBaseType
{
public function buildForm(FormBuilder $builder, array $options)
{
parent::buildForm($builder, $options);
// Your missing fields
}
}