<?php
namespace AppBundle\Form\Customer;
use AppBundle\Utility\CountryCodes;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type as Type;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints as Assert;
class CustomerType extends AbstractType
{
private $countryCodes;
public function __construct(CountryCodes $countryCodes)
{
$this->countryCodes = $countryCodes;
}
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('email', Type\EmailType::class, [
'attr' => ['class' => 'u-full-width'],
'label' => 'customer.email',
])
->add('name', Type\TextType::class, [
'required' => false,
'label' => 'customer.name',
'attr' => ['class' => 'u-full-width'],
'constraints' => [
new Assert\NotBlank([
'message' => 'address.company_or_name.not_blank',
'groups' => ['company'],
]),
],
])
->add('company', Type\TextType::class, [
'required' => false,
'label' => 'customer.company',
'attr' => ['class' => 'u-full-width'],
])
->add('street', Type\TextType::class, [
'required' => true,
'label' => 'customer.street',
'attr' => ['class' => 'u-full-width'],
])
->add('zip', Type\TextType::class, [
'required' => true,
'label' => 'customer.zip',
'attr' => ['class' => 'u-full-width'],
])
->add('city', Type\TextType::class, [
'required' => true,
'label' => 'customer.city',
'attr' => ['class' => 'u-full-width'],
])
->add('country', Type\ChoiceType::class, [
'choices' => $this->countryCodes->getCountryArray(),
'required' => true,
'label' => 'customer.country',
'attr' => ['class' => 'u-full-width'],
])
->add('fon', Type\TextType::class, [
'required' => false,
'label' => 'customer.fon',
'attr' => ['class' => 'u-full-width'],
])
->add('contactPerson', Type\TextType::class, [
'required' => false,
'label' => 'address.contact',
'attr' => ['class' => 'u-full-width'],
])
->add('fax', Type\TextType::class, [
'required' => false,
'label' => 'customer.fax',
'attr' => ['class' => 'u-full-width'],
]);
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'inherit_data' => true,
'validation_groups' => function (FormInterface $form) {
$data = $form->getData();
if (!$data->getCompany() && !$data->getName()) {
return ['Default', 'company'];
}
return ['Default'];
},
]);
}
/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
return 'appbundle_customer';
}
}