src/Form/ProveedorType.php line 16

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\User;
  4. use Symfony\Component\Form\AbstractType;
  5. use Symfony\Component\Form\FormBuilderInterface;
  6. use Symfony\Component\OptionsResolver\OptionsResolver;
  7. use Symfony\Component\Form\Extension\Core\Type\TextType;
  8. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  9. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  10. use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
  11. use Symfony\Component\Validator\Constraints\NotBlank;
  12. use Symfony\Component\Validator\Constraints\Length;
  13. class ProveedorType extends AbstractType
  14. {
  15.     public function buildForm(FormBuilderInterface $builder, array $options): void
  16.     {
  17.         $builder
  18.             ->add('name'TextType::class, [
  19.                 'label' => 'Nombre de la Clínica',
  20.                 'constraints' => [
  21.                     new NotBlank(['message' => 'El nombre de la clínica es obligatorio.']),
  22.                     new Length(['min' => 3'minMessage' => 'El nombre debe tener al menos 3 caracteres.']),
  23.                 ],
  24.                 'attr' => [
  25.                     'placeholder' => 'Ingrese el nombre de la clínica',
  26.                 ]
  27.             ])
  28.             ->add('email'EmailType::class, [
  29.                 'constraints' => [
  30.                     new NotBlank(['message' => 'El correo es obligatorio.']),
  31.                 ],
  32.                 'attr' => [
  33.                     'placeholder' => 'clinica@ejemplo.com',
  34.                 ]
  35.             ])
  36.             ->add('phone'TextType::class, [
  37.                 'label' => 'Teléfono de Contacto',
  38.                 'required' => false,
  39.                 'attr' => [
  40.                     'placeholder' => 'Teléfono principal de la clínica',
  41.                 ]
  42.             ])
  43.             ->add('address'TextType::class, [
  44.                 'label' => 'Dirección de la Clínica',
  45.                 'required' => false,
  46.                 'attr' => [
  47.                     'placeholder' => 'Dirección completa de la clínica',
  48.                 ]
  49.             ]);
  50.         // Solo agregar campo de contraseña para nuevos registros
  51.         if ($options['es_nuevo']) {
  52.             $builder->add('plainPassword'RepeatedType::class, [
  53.                 'type' => PasswordType::class,
  54.                 'invalid_message' => 'Las contraseñas deben coincidir.',
  55.                 'first_options' => [
  56.                     'label' => 'Contraseña',
  57.                     'attr' => [
  58.                         'placeholder' => 'Ingresa la contraseña',
  59.                         'class' => 'form-control password-field'
  60.                     ],
  61.                     'constraints' => [
  62.                         new NotBlank(['message' => 'La contraseña es obligatoria.']),
  63.                         new Length(['min' => 8'minMessage' => 'La contraseña debe tener al menos 8 caracteres.']),
  64.                     ],
  65.                 ],
  66.                 'second_options' => [
  67.                     'label' => 'Confirmar Contraseña',
  68.                     'attr' => [
  69.                         'placeholder' => 'Confirma la contraseña',
  70.                         'class' => 'form-control password-field'
  71.                     ]
  72.                 ],
  73.             ]);
  74.         }
  75.     }
  76.     public function configureOptions(OptionsResolver $resolver): void
  77.     {
  78.         $resolver->setDefaults([
  79.             'data_class' => User::class,
  80.             'es_nuevo' => true,
  81.             'validation_groups' => ['provider']
  82.         ]);
  83.     }
  84. }