src/AppBundle/Form/Customer/CustomerType.php line 13

Open in your IDE?
  1. <?php
  2. namespace AppBundle\Form\Customer;
  3. use AppBundle\Utility\CountryCodes;
  4. use Symfony\Component\Form\AbstractType;
  5. use Symfony\Component\Form\Extension\Core\Type as Type;
  6. use Symfony\Component\Form\FormBuilderInterface;
  7. use Symfony\Component\Form\FormInterface;
  8. use Symfony\Component\OptionsResolver\OptionsResolver;
  9. use Symfony\Component\Validator\Constraints as Assert;
  10. class CustomerType extends AbstractType
  11. {
  12.     private $countryCodes;
  13.     public function __construct(CountryCodes $countryCodes)
  14.     {
  15.         $this->countryCodes $countryCodes;
  16.     }
  17.     /**
  18.      * {@inheritdoc}
  19.      */
  20.     public function buildForm(FormBuilderInterface $builder, array $options)
  21.     {
  22.         $builder
  23.             ->add('email'Type\EmailType::class, [
  24.                 'attr' => ['class' => 'u-full-width'],
  25.                 'label' => 'customer.email',
  26.             ])
  27.             ->add('name'Type\TextType::class, [
  28.                 'required' => false,
  29.                 'label' => 'customer.name',
  30.                 'attr' => ['class' => 'u-full-width'],
  31.                 'constraints' => [
  32.                     new Assert\NotBlank([
  33.                         'message' => 'address.company_or_name.not_blank',
  34.                         'groups' => ['company'],
  35.                     ]),
  36.                 ],
  37.             ])
  38.             ->add('company'Type\TextType::class, [
  39.                 'required' => false,
  40.                 'label' => 'customer.company',
  41.                 'attr' => ['class' => 'u-full-width'],
  42.             ])
  43.             ->add('street'Type\TextType::class, [
  44.                 'required' => true,
  45.                 'label' => 'customer.street',
  46.                 'attr' => ['class' => 'u-full-width'],
  47.             ])
  48.             ->add('zip'Type\TextType::class, [
  49.                 'required' => true,
  50.                 'label' => 'customer.zip',
  51.                 'attr' => ['class' => 'u-full-width'],
  52.             ])
  53.             ->add('city'Type\TextType::class, [
  54.                 'required' => true,
  55.                 'label' => 'customer.city',
  56.                 'attr' => ['class' => 'u-full-width'],
  57.             ])
  58.             ->add('country'Type\ChoiceType::class, [
  59.                 'choices' => $this->countryCodes->getCountryArray(),
  60.                 'required' => true,
  61.                 'label' => 'customer.country',
  62.                 'attr' => ['class' => 'u-full-width'],
  63.             ])
  64.             ->add('fon'Type\TextType::class, [
  65.                 'required' => false,
  66.                 'label' => 'customer.fon',
  67.                 'attr' => ['class' => 'u-full-width'],
  68.             ])
  69.             ->add('contactPerson'Type\TextType::class, [
  70.                 'required' => false,
  71.                 'label' => 'address.contact',
  72.                 'attr' => ['class' => 'u-full-width'],
  73.             ])
  74.             ->add('fax'Type\TextType::class, [
  75.                 'required' => false,
  76.                 'label' => 'customer.fax',
  77.                 'attr' => ['class' => 'u-full-width'],
  78.             ]);
  79.     }
  80.     /**
  81.      * {@inheritdoc}
  82.      */
  83.     public function configureOptions(OptionsResolver $resolver)
  84.     {
  85.         $resolver->setDefaults([
  86.             'inherit_data' => true,
  87.             'validation_groups' => function (FormInterface $form) {
  88.                 $data $form->getData();
  89.                 if (!$data->getCompany() && !$data->getName()) {
  90.                     return ['Default''company'];
  91.                 }
  92.                 return ['Default'];
  93.             },
  94.         ]);
  95.     }
  96.     /**
  97.      * {@inheritdoc}
  98.      */
  99.     public function getBlockPrefix()
  100.     {
  101.         return 'appbundle_customer';
  102.     }
  103. }