src/Form/AddressBookType.php line 23

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\AddressBook;
  4. use App\Service\TextResolverService;
  5. use App\Validator\InstitutionalIdentifier;
  6. use Symfony\Component\Form\AbstractType;
  7. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  8. use Symfony\Component\Form\Extension\Core\Type\TextType;
  9. use Symfony\Component\Form\FormBuilderInterface;
  10. use Symfony\Component\OptionsResolver\OptionsResolver;
  11. use Symfony\Component\Validator\Constraints\NotBlank;
  12. class AddressBookType extends AbstractType {
  13. /** @var TextResolverService */
  14. protected $textResolverService;
  15. public function __construct(TextResolverService $textResolverService) {
  16. $this->textResolverService = $textResolverService;
  17. }
  18. public function buildForm(FormBuilderInterface $builder, array $options): void {
  19. $builder
  20. ->add('street', TextType::class, [
  21. 'attr' => [
  22. 'required' => true,
  23. ],
  24. 'constraints' => [new NotBlank()],
  25. 'label' => 'Straße',
  26. ])
  27. ->add('houseNumber', TextType::class, [
  28. 'attr' => [
  29. 'required' => true,
  30. ],
  31. 'constraints' => [new NotBlank()],
  32. 'label' => 'Hausnummer',
  33. ])
  34. ->add('zip', TextType::class, [
  35. 'attr' => [
  36. 'required' => true,
  37. ],
  38. 'constraints' => [new NotBlank()],
  39. 'label' => 'PLZ',
  40. ])
  41. ->add('city', TextType::class, [
  42. 'attr' => [
  43. 'required' => true,
  44. ],
  45. 'constraints' => [new NotBlank()],
  46. 'label' => 'Stadt',
  47. ])
  48. ->add('state', ChoiceType::class, [
  49. 'choices' => [
  50. 'Schleswig-Holstein' => '01',
  51. 'Hamburg' => '02',
  52. 'Niedersachsen' => '03',
  53. 'Bremen' => '04',
  54. 'Nordrhein-Westfalen' => '05',
  55. 'Hessen' => '06',
  56. 'Rheinland-Pfalz' => '07',
  57. 'Baden-Württemberg' => '08',
  58. 'Bayern' => '09',
  59. 'Saarland' => '10',
  60. 'Berlin' => '11',
  61. 'Brandenburg' => '12',
  62. 'Mecklenburg-Vorpommern' => '13',
  63. 'Sachsen' => '14',
  64. 'Sachsen-Anhalt' => '15',
  65. 'Thüringen' => '16',
  66. ],
  67. 'attr' => [
  68. 'required' => true,
  69. ],
  70. 'constraints' => [new NotBlank()],
  71. ])
  72. ->add('phoneNumber', TextType::class, [
  73. 'required' => false,
  74. 'label' => 'Telefonnummer',
  75. ])
  76. ->add('ikNumber', TextType::class, [
  77. 'attr' => [
  78. 'required' => true,
  79. ],
  80. 'constraints' => [
  81. new NotBlank(),
  82. new InstitutionalIdentifier(),
  83. ],
  84. 'label' => 'IK Nummer',
  85. ])
  86. ;
  87. if ($options['enable_customer_number'] ?? false) {
  88. $builder->add('customerNumber', TextType::class, [
  89. 'required' => false,
  90. 'label' => 'Kundennummer',
  91. ]);
  92. }
  93. }
  94. public function configureOptions(OptionsResolver $resolver): void {
  95. $resolver->setDefaults([
  96. 'data_class' => AddressBook::class,
  97. 'enable_customer_number' => false,
  98. ]);
  99. }
  100. }