Newscoop\GimmeBundle\Form\Type\ArticleFieldsType::buildForm PHP Method

buildForm() public method

public buildForm ( Symfony\Component\Form\FormBuilderInterface $builder, array $options )
$builder Symfony\Component\Form\FormBuilderInterface
$options array
    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;
                }
            }
        });
    }