public function buildForm(FormBuilderInterface $builder, array $options)
{
if (is_null($this->articleData)) {
throw new \LogicException('The ArticleFieldsType cannot be used without article data!');
}
$articleData = $this->articleData;
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use($articleData) {
$form = $event->getForm();
foreach ($articleData->getUserDefinedColumns(true) as $articleTypeField) {
switch ($articleTypeField->getType()) {
case ArticleTypeField::TYPE_TEXT:
case ArticleTypeField::TYPE_COMPLEX_DATE:
$form->add(substr($articleTypeField->getName(), 1), 'text', array('required' => false));
break;
case ArticleTypeField::TYPE_LONGTEXT:
case ArticleTypeField::TYPE_BODY:
$form->add(substr($articleTypeField->getName(), 1), 'textarea', array('required' => false));
break;
case ArticleTypeField::TYPE_TOPIC:
case ArticleTypeField::TYPE_NUMERIC:
$form->add(substr($articleTypeField->getName(), 1), 'integer', array('required' => false));
break;
case ArticleTypeField::TYPE_SWITCH:
$form->add(substr($articleTypeField->getName(), 1), 'integer', array('required' => false));
break;
}
}
});
}