src/Form/SolicitudAccesoType.php line 128

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