src/Form/DistributorFormType.php line 19

  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Countries;
  4. use App\Entity\Distributors;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use FOS\CKEditorBundle\Form\Type\CKEditorType;
  7. use Symfony\Component\Form\AbstractType;
  8. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  9. use Symfony\Component\Form\Extension\Core\Type\FileType;
  10. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  11. use Symfony\Component\Form\Extension\Core\Type\TextType;
  12. use Symfony\Component\Form\FormBuilderInterface;
  13. use Symfony\Component\OptionsResolver\OptionsResolver;
  14. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  15. use Symfony\Component\Security\Core\Security;
  16. class DistributorFormType extends AbstractType
  17. {
  18. private $em;
  19. private $token;
  20. public function __construct(EntityManagerInterface $em, TokenStorageInterface $token)
  21. {
  22. $this->em = $em;
  23. $this->token = $token;
  24. }
  25. public function buildForm(FormBuilderInterface $builder, array $options): void
  26. {
  27. $countries = $this->em->getRepository(Countries::class)->findAll();
  28. $country_id = '';
  29. if($this->token->getToken() != null) {
  30. if($this->token->getToken()->getUser()->getDistributor()->getAddressCountry() != null) {
  31. $country_id = $this->token->getToken()->getUser()->getDistributor()->getAddressCountry()->getId();
  32. }
  33. }
  34. $arr[''] = 'Select Your Country';
  35. foreach($countries as $country){
  36. $arr[$country->getId()] = $country->getName();
  37. }
  38. $builder
  39. ->add('distributorName', TextType::class, [
  40. 'label' => 'Company Name',
  41. 'required' => false,
  42. ])
  43. ->add('logo', FileType::class, [
  44. 'label' => 'Logo',
  45. 'required' => false,
  46. ])
  47. ->add('telephone', TextType::class, [
  48. 'label' => 'Telephone',
  49. 'required' => false,
  50. ])
  51. ->add('email', TextType::class, [
  52. 'label' => 'Email',
  53. 'required' => false,
  54. ])
  55. ->add('website', TextType::class, [
  56. 'label' => 'Website',
  57. 'required' => false,
  58. ])
  59. ->add(
  60. 'addressCountry',
  61. ChoiceType::class,
  62. [
  63. 'label' => 'Select a Country',
  64. 'choices' => array_flip($arr),
  65. 'required' => false,
  66. 'data' => $country_id,
  67. ]
  68. )
  69. ->add('addressStreet', TextType::class, [
  70. 'label' => 'Street Address',
  71. 'required' => false,
  72. ])
  73. ->add('addressCity', TextType::class, [
  74. 'label' => 'City',
  75. 'required' => false,
  76. ])
  77. ->add('addressPostalCode', TextType::class, [
  78. 'label' => 'Postal Code',
  79. 'required' => false,
  80. ])
  81. ->add('addressState', TextType::class, [
  82. 'label' => 'State',
  83. 'required' => false,
  84. ])
  85. ->add('about', CKEditorType::class, [
  86. 'label' => 'About',
  87. 'required' => false,
  88. 'config' => [
  89. 'toolbar' => 'basic'
  90. ]
  91. ])
  92. ->add('operatingHours', CKEditorType::class, [
  93. 'label' => 'Operating Hours',
  94. 'required' => false,
  95. 'config' => [
  96. 'toolbar' => 'basic'
  97. ]
  98. ])
  99. ->add('refundPolicy', CKEditorType::class, [
  100. 'label' => 'Refund Policy',
  101. 'required' => false,
  102. 'config' => [
  103. 'toolbar' => 'basic'
  104. ]
  105. ])
  106. ->add('salesTaxPolicy', CKEditorType::class, [
  107. 'label' => 'Sales Tax Policy',
  108. 'required' => false,
  109. 'config' => [
  110. 'toolbar' => 'basic'
  111. ]
  112. ])
  113. ->add('shippingPolicy', CKEditorType::class, [
  114. 'label' => 'Shipping Policy',
  115. 'required' => false,
  116. 'config' => [
  117. 'toolbar' => 'basic'
  118. ]
  119. ])
  120. ->add('isManufaturer', ChoiceType::class, [
  121. 'choices' => [
  122. 'Yes' => 1,
  123. 'No' => 0,
  124. ]
  125. ])
  126. ->add(
  127. 'logo',
  128. FileType::class,
  129. [
  130. 'required' => false,
  131. ]
  132. )
  133. ;
  134. }
  135. public function configureOptions(OptionsResolver $resolver): void
  136. {
  137. $resolver->setDefaults([
  138. 'data_class' => Distributors::class,
  139. ]);
  140. }
  141. }