<?php
namespace App\Form;
use App\Entity\Producer;
use App\Entity\Address;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Validator\Constraints\Image;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Validator\Constraints\Regex;
use Symfony\Component\Form\Extension\Core\Type\TextType;
class ProducerType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', null, [
'required' => true,
'attr' => [
'autocomplete' => 'off',
'placeholder' => 'select.name',
],
'validation_groups' => ['valid-value'],
])
->add('surname', null, [
'label' => 'User.surname',
'required' => true,
'attr' => [
'autocomplete' => 'off',
'placeholder' => 'select.surname',
],
'validation_groups' => ['valid-value'],
])
->add('cuit', TextType::class, [
'attr' => [
'data-cleave' => json_encode(['blocks' => [2, 8, 1], 'delimiter' => '-']),
'class' => 'form-control',
'placeholder' => '01-12345678-9',
'autocomplete' => 'off',
'maxlength' => 13,
'minlength' => 13,
],
'label' => 'CUIT',
// 'required => true,
'constraints' => [
new Regex('/\d{2}\-\d{8}\-\d/'),
],
'validation_groups' => ['valid-value'],
])
->add('cuig', null, [
'attr' => [
'class' => 'form-control',
'placeholder' => 'AB001',
'autocomplete' => 'off',
'maxlength' => 5,
'minlength' => 5,
'pattern' => '[a-zA-Z]{2}\d{3}'
],
// 'required => true,
'constraints' => [
new NotBlank(),
new Regex('/[a-zA-Z]{2}\d{3}/')
],
'validation_groups' => ['valid-value'],
])
->add('renspa', TextType::class, [
'attr' => [
'data-cleave' => json_encode(['blocks' => [2, 3, 1, 5, 2], 'delimiter' => '.']),
'class' => 'form-control',
'placeholder' => '01.001.1.10101/01',
'autocomplete' => 'off',
'maxlength' => 17,
'minlength' => 17,
],
// 'required => true,
'constraints' => [
new Regex('/\d{2}\.\d{3}\.\d{1}\.\d{5}\.\d{2}/'),
],
'validation_groups' => ['valid-value'],
])
->add('picture', FileType ::class, [
'label' => 'Imagen',
'mapped' => false,
'required' => false,
'error_bubbling' => true,
'constraints' => [
new Image([
'maxSize' => '2M',
'mimeTypes' => [
'image/png',
'image/jpg',
'image/jpeg',
],
'mimeTypesMessage' => 'file.image.error',
])
]
])
->add('email', EmailType::class, [
'required' => false,
'attr' => [
'class' => 'form-control',
'autocomplete' => 'off',
'placeholder' => 'select.email'
]
])
->add('businessName', null, [
'required' => false,
'attr' => [
'class' => 'form-control',
'autocomplete' => 'off',
'placeholder' => 'select.businessName',
],
'label' => 'Producer.businessName',
])
->add('phone', null, [
'required' => false,
'attr' => [
'class' => 'form-control',
'autocomplete' => 'off',
'placeholder' => 'select.phone',
],
'label' => 'Producer.phone'
])
->add('address', TextType::class, [
'required' => false,
'attr' => [
'data-selectize'=>'{"valueField":"id","labelField":"name", "searchField":"name", "delimiter": "|"}',
'class' => 'filters selectize geocode','placeholder' => 'select.addressChoice'],
'label' => 'Form.addressLabel',
])
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Producer::class,
'validation_groups' => ['valid-value'],
]);
}
}