src/JuridicusBundle/Form/KundeType.php line 27

Open in your IDE?
  1. <?php
  2. namespace JF\JuridicusBundle\Form;
  3. use Symfony\Component\Form\AbstractType;
  4. use Symfony\Component\Form\FormBuilderInterface;
  5. use Symfony\Component\OptionsResolver\OptionsResolver;
  6. use Symfony\Component\Validator\Constraints as Assert;
  7. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  8. use JF\JuridicusBundle\Form\Type\BundeslandType;
  9. use JF\JuridicusBundle\Form\Type\StrasseType;
  10. use JF\JuridicusBundle\Form\Type\KundeKenntnisseType;
  11. use JF\JuridicusBundle\Form\Type\KundeSprachKenntnisseType;
  12. use JF\JuridicusBundle\Form\Type\HandynummerType;
  13. use JF\JuridicusBundle\Form\Type\OrtType;
  14. use JF\JuridicusBundle\Form\Type\KennzifferType;
  15. use Symfony\Component\Form\Extension\Core\Type\DateType;
  16. use Symfony\Component\Validator\Constraints\NotBlank;
  17. use JF\JuridicusBundle\Form\EventListener\KundeSubscriber;
  18. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  19. use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
  20. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  21. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  22. use Symfony\Component\Form\Extension\Core\Type\TextType;
  23. class KundeType extends AbstractType
  24. {
  25. /**
  26. *
  27. * @param \Symfony\Component\Form\FormBuilderInterface $builder
  28. * @param array $options
  29. */
  30. public function buildForm(FormBuilderInterface $builder, array $options)
  31. {
  32. $em = $options['em'];
  33. $factory = $builder->getFormFactory();
  34. $subscriber = new KundeSubscriber($factory, $em);
  35. $builder
  36. ->addEventSubscriber($subscriber)
  37. ->add('bundesland', BundeslandType::class, array(
  38. 'required' => true,
  39. 'by_reference' => false,
  40. ))
  41. ->add('examen', HiddenType::class, array(
  42. 'required' => true,
  43. ))
  44. ->add('vorname')
  45. ->add('nachname')
  46. /* changedFrom
  47. ->add('strasse', StrasseType::class, array(
  48. 'label' => 'Straße & Hausnummer',
  49. 'data_class' => 'JF\JuridicusBundle\Entity\Kunde',
  50. ))
  51. ->add('ort', OrtType::class, array(
  52. 'label' => 'PLZ & Ort',
  53. 'data_class' => 'JF\JuridicusBundle\Entity\Kunde'
  54. )) */
  55. ->add('strasse')
  56. ->add('hausnummer')
  57. ->add('ort')
  58. ->add('plz')
  59. ->add('geburtsdatum', DateType::class, array(
  60. 'widget' => 'single_text',
  61. 'html5'=>true,
  62. ))
  63. ->add('email', RepeatedType::class, array(
  64. 'type' => EmailType::class,
  65. 'first_options' => array('label' => 'E-Mail'),
  66. 'second_options' => array('label' => 'E-Mail (Wiederholung)'),
  67. 'invalid_message' => 'Die E-Mail-Adressen stimmen nicht überein.',
  68. ))
  69. ->add('handynummer', RepeatedType::class, array(
  70. 'first_options' => array('label' => 'Handynummer'),
  71. 'second_options' => array('label' => 'Handynummer (Wiederholung)'),
  72. 'invalid_message' => 'Die Handynummern stimmen nicht überein.',
  73. 'type' => HandynummerType::class
  74. ))
  75. ->add('telefonnummer', null, array(
  76. 'required' => false
  77. ))
  78. ->add('kunde_kenntnisse', KundeKenntnisseType::class, array(
  79. 'label' => 'Besondere Interessengebiete',
  80. 'by_reference' => false,
  81. 'required' => false,
  82. //'help' => '(Seminararbeit etc.) in einem oder mehreren Rechtsgebieten'
  83. ))
  84. ->add('kunde_englisch_kenntniss', ChoiceType::class, array(
  85. 'label' => 'Sprachlevel Englisch',
  86. 'required' => true,
  87. 'expanded' => false,
  88. 'attr' => [
  89. 'class' => 'form-select',
  90. ],
  91. 'choices' => [
  92. 'Grundkenntniss' => 'Grundkenntniss',
  93. 'Konversationssicher oder gute Kenntnisse' => 'Konversationssicher',
  94. 'fließend' => 'fließend',
  95. 'verhandlungssicher' => 'verhandlungssicher',
  96. 'Muttersprache' => 'Muttersprache'
  97. ],
  98. ))
  99. ->add('kunde_wunsch_arbeitsort', null, array(
  100. 'label' => 'Wunscharbeitsort',
  101. 'required' => true,
  102. 'help' => 'Gib bis zu drei Orte ein (Stadt oder PLZ)'
  103. ))
  104. ;
  105. $pruefungsamt = $options['pruefungsamt'];
  106. $kennziffer_parts = $pruefungsamt->getKennzifferParts();
  107. if ($pruefungsamt->hasVollbestand()) {
  108. $builder->add('export_erlaubt', null, array(
  109. 'required' => false,
  110. ));
  111. }
  112. $builder->add('terms_accepted', CheckboxType::class, array(
  113. 'label' => false,
  114. 'mapped' => false,
  115. 'required' => true
  116. ));
  117. if ($kennziffer_parts > 0) {
  118. $builder->add('kennziffer', TextType::class, array( //chanedFrom 'kennziffer' //TEST from KennzifferType::class
  119. 'label' => 'Kennziffer des Prüflings',
  120. 'error_bubbling' => false,
  121. //'kennziffer_parts' => $kennziffer_parts, //Einkommentiert! //TEST
  122. ));
  123. } else {
  124. $builder->add('kennziffer', HiddenType::class, array('data' => ''));
  125. }
  126. }
  127. /**
  128. *
  129. * @param \Symfony\Component\OptionsResolver\OptionsResolver $resolver
  130. */
  131. public function configureOptions(OptionsResolver $resolver)
  132. {
  133. $resolver->setDefaults(array(
  134. 'data_class' => 'JF\JuridicusBundle\Entity\Kunde',
  135. ));
  136. $resolver->setRequired(array(
  137. 'em', 'pruefungsamt'
  138. ));
  139. $resolver->setAllowedTypes('em', 'Doctrine\ORM\EntityManager');
  140. $resolver->setAllowedTypes('pruefungsamt', 'JF\JuridicusBundle\Entity\Pruefungsamt');
  141. /* changedFrom
  142. $resolver->setAllowedTypes(array(
  143. 'em' => 'Doctrine\ORM\EntityManager',
  144. 'pruefungsamt' => 'JF\JuridicusBundle\Entity\Pruefungsamt',
  145. )); */
  146. }
  147. /**
  148. *
  149. * @return string
  150. */
  151. public function getKundeType()
  152. {
  153. return 'kunde';
  154. }
  155. }