src/Form/CompanyType.php line 36

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Company;
  4. use Symfony\Component\Form\AbstractType;
  5. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  6. use Symfony\Component\Form\Extension\Core\Type\CollectionType;
  7. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  8. use Symfony\Component\Form\Extension\Core\Type\CountryType;
  9. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  10. use Symfony\Component\Form\Extension\Core\Type\FormType;
  11. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  12. use Symfony\Component\Form\Extension\Core\Type\FileType;
  13. use Symfony\Component\Form\Extension\Core\Type\TelType;
  14. use Symfony\Component\Form\Extension\Core\Type\TextType;
  15. use Symfony\Component\Form\Extension\Core\Type\UrlType;
  16. use Symfony\Component\Form\FormBuilderInterface;
  17. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  18. use Symfony\Component\OptionsResolver\OptionsResolver;
  19. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  20. use Symfony\Component\Form\FormEvent;
  21. use Symfony\Component\Form\FormEvents;
  22. use App\Form\CompanyLocationType;
  23. use App\Form\CompanyDefaultShippingType;
  24. use App\Entity\CompanyLocation;
  25. use App\Entity\CompanyDefaultShipping;
  26. use App\Form\Type\PhoneType;
  27. use App\Form\Type\EditorType;
  28. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  29. class CompanyType extends AbstractType
  30. {
  31.     public function buildForm(FormBuilderInterface $builder, array $options)
  32.     {
  33.         if(!empty($builder->getData())){
  34.             if(empty($builder->getData()->getDefaultShipping())){
  35.                 $defaultShippingData = new companyDefaultShipping();
  36.                 $builder->getData()->setDefaultShipping($defaultShippingData);
  37.             }else
  38.                 $defaultShippingData $builder->getData()->getDefaultShipping();
  39.         }else
  40.             $defaultShippingData = new companyDefaultShipping();
  41.         $builder
  42.             ->add('termsAcceptance'CheckboxType::class, array(
  43.                 'empty_data' => false,
  44.                 'required' => true,
  45.                 'attr' => array('class' => 'checkbox-only'),
  46.             ))
  47.             ->add('name'TextType::class, array(
  48.                 'label' => 'Nom de la compagnie'
  49.             ))
  50.             ->add('description'EditorType::class, array(
  51.                 'label' => 'Description',
  52.                 'type' => 'simple'
  53.             ))
  54.             ->add('showPublicly'CheckboxType::class, array(
  55.                 'required' => false,
  56.                 'label' => 'Afficher la boutique sur le site',
  57.                 'attr' => array('class' => 'switch-button checkbox-only'),
  58.             ))
  59.             ->add('website'TextType::Class, array(
  60.                 'attr' => array(
  61.                     'placeholder' => 'http://www.exemple.com'
  62.                 ),
  63.                 'empty_data' => '',
  64.                 'required' => false
  65.             ))
  66.             ->add('customUrl'TextType::Class, array(
  67.                 'label' => 'Lien boutique maturin https://www.maturin.ca/',
  68.                 'required' => false
  69.             ))
  70.             ->add(
  71.                 $builder->create('mainLocation'FormType::class,
  72.                     array(
  73.                         'by_reference' => true,
  74.                         'empty_data' => new CompanyLocation(),
  75.                         'data_class' => CompanyLocation::class,
  76.                         'label' => false
  77.                     ))
  78.                     ->add('pickUp'CheckBoxType::class, array(
  79.                         'label' => 'Faire de cet établissement un lieu de cueillette?',
  80.                         'attr' => array('class' => 'switch-button checkbox-only'),
  81.                         'required' => false
  82.                     ))
  83.                     ->add('civicNumber')
  84.                     ->add('streetName')
  85.                     ->add('city')
  86.                     ->add('province'ChoiceType::class, array(
  87.                         'label' => 'Province',
  88.                         'placeholder' => 'Choisir',
  89.                         'choices' => array(
  90.                           'Alberta'=> 'AB',
  91.                           'Colombie-Britannique' => 'BC',
  92.                           'Île-du-Prince-Édouard' => 'PE',
  93.                           'Manitoba' => 'MB',
  94.                           'Nouveau-Brunswick' => 'NB',
  95.                           'Nouvelle-Écosse' => 'NS',
  96.                           'Nunavut' => 'NU',
  97.                           'Ontario' => 'ON',
  98.                           'Québec' => 'QC',
  99.                           'Saskatchewan' => 'SK',
  100.                           'Terre-Neuve-et-Labrador' => 'NL',
  101.                           'Territoires du Nord-Ouest' => 'NT',
  102.                           'Yukon' => 'YT'
  103.                         )
  104.                     ))
  105.                     ->add('region'EntityType::class, array(
  106.                         'label' => 'Région',
  107.                         'placeholder' => 'Choisir',
  108.                         'class' => 'App\Entity\Region',
  109.                         'choice_label' => 'name',
  110.                         'required' => true,
  111.                     ))
  112.                     ->add('zipCode')
  113.                     ->add('country'CountryType::class, array(
  114.                         'preferred_choices' => array('CA','US')
  115.                     ))
  116.                     ->add('phone'PhoneType::Class)
  117.                     ->add('phoneExtension'TextType::Class, array('label' => 'Ext:''required' => false))
  118.                     ->add('mobilePhone'PhoneType::Class, array(
  119.                         'required' => false
  120.                     ))
  121.                     ->add('email'EmailType::Class, array(
  122.                         'required' => false
  123.                     ))
  124.                     ->add('notesForBuyer'TextareaType::class, array(
  125.                         'label' => 'Veuillez entrer les informations (Date, Heure, Jour de délai moyen etc...)',
  126.                         'required' => false
  127.                     ))
  128.                     ->add('showPublic'CheckboxType::class, array(
  129.                         'required' => false,
  130.                         'label' => 'Afficher publiquement',
  131.                         'attr' => array('class' => 'switch-button checkbox-only'),
  132.                     ))
  133.             )
  134.             ->add('otherLocations'CollectionType::class,array(
  135.                 'entry_type' => CompanyLocationType::class,
  136.                 'allow_add' => true,
  137.                 'allow_delete' => true,
  138.                 'prototype' => true,
  139.                 'by_reference' => false,
  140.                 'label' => false
  141.             ))
  142.             ->add('image'FileType::Class, array(
  143.                 'label' => 'Logo',
  144.                 'data_class' => null,
  145.                 'required' => false,
  146.             ))
  147.             ->add('banner'FileType::Class, array(
  148.                 'data_class' => null,
  149.                 'required' => false,
  150.             ))
  151.             ->add('speciality'EditorType::Class,
  152.                 array(
  153.                     'required' => false
  154.                 )
  155.             )
  156.             ->add('customSaleConditions'CheckBoxType::class, array(
  157.                 'label' => 'Souhaitez-vous personnaliser les conditions générales de vente ?',
  158.                 'attr' => array('class' => 'switch-button checkbox-only'),
  159.                 'required' => false
  160.             ))
  161.             ->add('conditionsShipping'TextareaType::Class,
  162.                 array(
  163.                     'required' => false,
  164.                     'label' => 'Livraison et cueillette',
  165.                 )
  166.             )
  167.             ->add('conditionsReturn'TextareaType::Class,
  168.                 array(
  169.                     'required' => false,
  170.                     'label' => 'Retour et échange',
  171.                 )
  172.             )
  173.             ->add('conditionsCancel'TextareaType::Class,
  174.                 array(
  175.                     'required' => false,
  176.                     'label' => 'Annulation',
  177.                 )
  178.             )
  179.             ->add('defaultShipping'CompanyDefaultShippingType::class, array('data' => $defaultShippingData))
  180.             ->add('submit'SubmitType::Class,
  181.                 array(
  182.                     'label' => 'Soumettre'
  183.                 )
  184.             )
  185.         ;
  186.     }
  187.     public function configureOptions(OptionsResolver $resolver)
  188.     {
  189.         $resolver->setDefaults([
  190.             'data_class' => Company::class,
  191.             'csrf_protection' => false//Create some weird bug on this form
  192.         ]);
  193.     }
  194. }