src/Form/SolicitudAccesoType.php line 25

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Role;
  4. use App\Entity\Unidad;
  5. use App\Entity\Usuario;
  6. use Doctrine\ORM\EntityRepository;
  7. use Symfony\Component\Form\AbstractType;
  8. use Symfony\Component\Form\FormBuilderInterface;
  9. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  10. use Symfony\Component\Validator\Constraints\Email;
  11. use Symfony\Component\Validator\Constraints\Regex;
  12. use Symfony\Component\Validator\Constraints\IsTrue;
  13. use Symfony\Component\Validator\Constraints\Length;
  14. use Symfony\Component\Validator\Constraints\NotBlank;
  15. use Symfony\Component\OptionsResolver\OptionsResolver;
  16. use Symfony\Component\Form\Extension\Core\Type\TextType;
  17. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  18. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  19. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  20. use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
  21. use function Symfony\Component\DependencyInjection\Loader\Configurator\param;
  22. class SolicitudAccesoType extends AbstractType
  23. {
  24.     public function buildForm(FormBuilderInterface $builder, array $options): void
  25.     {
  26.         $builder
  27.             ->add('nombre'null, [
  28.                 'label' => '* Nombre(s)',
  29.                 'attr' => ['class' => 'form-control'],
  30.                 'constraints' => [
  31.                     new NotBlank([
  32.                         'message' => 'El campo no debe estar vacío',
  33.                     ])
  34.                 ],
  35.                 'required' => false
  36.             ])
  37.             ->add('papellido'null, [
  38.                 'label' => '* Primer apellido',
  39.                 'attr' => ['class' => 'form-control'],
  40.                 'constraints' => [
  41.                     new NotBlank([
  42.                         'message' => 'El campo no debe estar vacío',
  43.                     ])
  44.                 ],
  45.                 'required' => false
  46.             ])
  47.             ->add('sapellido'null, [
  48.                 'label' => 'Segundo apellido',
  49.                 'attr' => ['class' => 'form-control']
  50.             ])
  51.             ->add('correo'RepeatedType::class, [
  52.                 'type' => TextType::class,
  53.                 'first_options' => [
  54.                     'label' => '* Correo',
  55.                     'attr' => ['class' => 'form-control'],
  56.                     'constraints' => [
  57.                         new NotBlank([
  58.                             'message' => 'Ingrese su correo por favor',
  59.                         ]),
  60.                         new Email([
  61.                             'message' => 'Ingrese un correo electrónico válido',
  62.                         ]),
  63.                         new Regex([
  64.                             'pattern' => '/^[\w\.\-]+@conalepmex\.edu\.mx$/',
  65.                             'message' => 'El correo debe ser del dominio conalepmex.edu.mx',
  66.                         ]),
  67.                     ],
  68.                 ],
  69.                 'second_options' => [
  70.                     'label' => '* Repetir correo',
  71.                     'attr' => ['class' => 'form-control''autocomplete' => 'off']
  72.                 ],
  73.                 'invalid_message' => 'Los correos deben coincidir.',
  74.                 // Instead of being set onto the object directly,
  75.                 // this is read and encoded in the controller
  76.                 'mapped' => true,
  77.                 'required' => false
  78.             ])
  79.             ->add('contrasena'null, [
  80.                 'label' => "Contraseña",
  81.                 'attr' => ['class' => 'form-control'],
  82.                 'constraints' => [
  83.                     new NotBlank([
  84.                         'message' => 'Este campo no debe estar vacío',
  85.                     ]),
  86.                 ],
  87.                 'required' => false
  88.             ])
  89.             ->add('unidad'EntityType::class, [
  90.                 'label' => '* Unidad administrativa',
  91.                 'class' => Unidad::class,
  92.                 'required' => true,
  93.                 'constraints' => [
  94.                     new NotBlank([
  95.                         'message' => 'Este campo no debe estar vacío',
  96.                     ]),
  97.                 ],
  98.                 'attr' => [
  99.                     'class' => 'form-control'
  100.                 ],
  101.                 'query_builder' => function (EntityRepository $er) {
  102.                     return $er->createQueryBuilder('u')
  103.                         ->orderBy('u.nombre''ASC');
  104.                 }
  105.             ])
  106.             /*->add('rol', null, [
  107.                 'class' => Role::class,
  108.                 'label' => '* Rol',
  109.                 'required' => true,
  110.                 'placeholder' => 'Seleccione el rol',
  111.                 'attr' => ['class' => 'form-control'],
  112.                 'query_builder' => function (EntityRepository $er) use ($options){
  113.                     $query = $er->createQueryBuilder('r');
  114.                     if($options['data_info'] == 2 || $options['data_info'] == 3){
  115.                         $query->where('r.idRol != :rol_a');
  116.                         $query->andWhere('r.idRol != :rol_b');
  117.                         $query->setParameter('rol_a', 1);
  118.                         $query->setParameter('rol_b', 2);
  119.                     }
  120.                     $query->orderBy('r.idRol', 'ASC');
  121.                     return $query;
  122.                 }
  123.             ])*/
  124.             ->add('rol'null, [
  125.                 'class' => Role::class,
  126.                 'label' => '* Rol',
  127.                 'required' => false,
  128.                 'placeholder' => 'Seleccione el rol',
  129.                 'attr' => ['class' => 'form-control'],
  130.                 'constraints' => [
  131.                     new NotBlank([
  132.                         'message' => 'Este campo no debe estar vacío',
  133.                     ]),
  134.                 ],
  135.                 'query_builder' => function (EntityRepository $er) use ($options){
  136.                     $query $er->createQueryBuilder('r');
  137.                     $rolesToShow = [34]; // IDs de los roles a mostrar
  138.                     $query->where('r.idRol IN (:roles)');
  139.                     $query->setParameter('roles'$rolesToShow);
  140.                     $query->orderBy('r.idRol''ASC');
  141.                     return $query;
  142.                 }                
  143.             ])
  144.             ->add('estatus'ChoiceType::class, [
  145.                 'choices'  => [
  146.                     'Pendiente' => 'Pendiente',
  147.                     'Rechazado' => 'Rechazado',
  148.                     'Aceptado' => 'Aceptado',
  149.                     'Activo' => 'Activo',
  150.                     'Suspendido' => 'Suspendido'
  151.                 ],
  152.                 'attr' => ['class' => 'form-control']
  153.             ])
  154.         ;
  155.     }
  156.     public function configureOptions(OptionsResolver $resolver): void
  157.     {
  158.         $resolver->setDefaults([
  159.             'data_class' => Usuario::class,
  160.             'data_info' => array()
  161.         ]);
  162.     }
  163.     //Para subir formulario
  164. }