<?php namespace Rapsys\AirBundle\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; use Symfony\Component\Form\Extension\Core\Type\FileType; use Symfony\Component\Form\Extension\Core\Type\HiddenType; use Symfony\Component\Form\Extension\Core\Type\NumberType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\Extension\Core\Type\TextareaType; use Symfony\Component\Form\Extension\Core\Type\UrlType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Validator\Constraints\File; use Rapsys\AirBundle\Form\Extension\Type\HiddenEntityType; use Rapsys\AirBundle\Entity\Snippet; class SnippetType extends AbstractType { /** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $form, array $options): FormBuilderInterface { //Start build form $form //Add locale, location and user hidden fields ->add('locale', HiddenType::class, ['required' => true]) ->add('location', HiddenEntityType::class, ['required' => true]) ->add('user', HiddenEntityType::class, ['required' => true]); //With description if ($options['description']) { $form->add('description', TextareaType::class, ['attr' => ['placeholder' => 'Your description', 'cols' => 50, 'rows' => 15], 'required' => false]); } //With class if ($options['class']) { $form->add('class', TextareaType::class, ['attr' => ['placeholder' => 'Your class', 'cols' => 50, 'rows' => 10], 'required' => false]); } //With short if ($options['short']) { $form->add('short', TextareaType::class, ['attr' => ['placeholder' => 'Your short', 'cols' => 50, 'rows' => 10], 'required' => false]); } //With rate if ($options['rate']) { $form->add('rate', NumberType::class, ['attr' => ['placeholder' => 'Your rate'], 'required' => false]); } //With hat if ($options['hat']) { $form->add('hat', CheckboxType::class, ['attr' => ['placeholder' => 'Your hat'], 'required' => false]); } //With contact if ($options['contact']) { $form->add('contact', UrlType::class, ['attr' => ['placeholder' => 'Your contact'], 'required' => false]); } //With donate if ($options['donate']) { $form->add('donate', UrlType::class, ['attr' => ['placeholder' => 'Your donate'], 'required' => false]); } //With link if ($options['link']) { $form->add('link', UrlType::class, ['attr' => ['placeholder' => 'Your link'], 'required' => false]); } //With profile if ($options['profile']) { $form->add('profile', UrlType::class, ['attr' => ['placeholder' => 'Your profile'], 'required' => false]); } //Add submit $form->add('submit', SubmitType::class, ['label' => 'Send', 'attr' => ['class' => 'submit']]); //Return form builder return $form; } /** * {@inheritdoc} */ public function configureOptions(OptionsResolver $resolver): void { //Set defaults $resolver->setDefaults(['class' => true, 'contact' => true, 'data_class' => Snippet::class, 'description' => true, 'donate' => true, 'error_bubbling' => true, 'hat' => true, 'link' => true, 'profile' => true, 'rate' => true, 'short' => true]); //Add extra class option $resolver->setAllowedTypes('class', 'boolean'); //Add extra contact option $resolver->setAllowedTypes('contact', 'boolean'); //Add extra description option $resolver->setAllowedTypes('description', 'boolean'); //Add extra donate option $resolver->setAllowedTypes('donate', 'boolean'); //Add extra hat option $resolver->setAllowedTypes('hat', 'boolean'); //Add extra link option $resolver->setAllowedTypes('link', 'boolean'); //Add extra profile option $resolver->setAllowedTypes('profile', 'boolean'); //Add extra rate option $resolver->setAllowedTypes('rate', 'boolean'); //Add extra short option $resolver->setAllowedTypes('short', 'boolean'); } /** * {@inheritdoc} */ public function getName(): string { return 'rapsysair_snippet'; } }