src/Form/SolicitudAccesoType.php line 23

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.                 'attr' => [
  84.                     'class' => 'form-control'
  85.                 ],
  86.                 'query_builder' => function (EntityRepository $er) {
  87.                     return $er->createQueryBuilder('u')
  88.                         ->orderBy('u.nombre''ASC');
  89.                 }
  90.             ])
  91.             /*->add('rol', null, [
  92.                 'class' => Role::class,
  93.                 'label' => '* Rol',
  94.                 'required' => true,
  95.                 'placeholder' => 'Seleccione el rol',
  96.                 'attr' => ['class' => 'form-control'],
  97.                 'query_builder' => function (EntityRepository $er) use ($options){
  98.                     $query = $er->createQueryBuilder('r');
  99.                     if($options['data_info'] == 2 || $options['data_info'] == 3){
  100.                         $query->where('r.idRol != :rol_a');
  101.                         $query->andWhere('r.idRol != :rol_b');
  102.                         $query->setParameter('rol_a', 1);
  103.                         $query->setParameter('rol_b', 2);
  104.                     }
  105.                     $query->orderBy('r.idRol', 'ASC');
  106.                     return $query;
  107.                 }
  108.             ])*/
  109.             ->add('rol'null, [
  110.                 'class' => Role::class,
  111.                 'label' => '* Rol',
  112.                 'required' => true,
  113.                 'placeholder' => 'Seleccione el rol',
  114.                 'attr' => ['class' => 'form-control'],
  115.                 'query_builder' => function (EntityRepository $er) use ($options){
  116.                     $query $er->createQueryBuilder('r');
  117.                     $rolesToShow = [34]; // IDs de los roles a mostrar
  118.                     $query->where('r.idRol IN (:roles)');
  119.                     $query->setParameter('roles'$rolesToShow);
  120.                     $query->orderBy('r.idRol''ASC');
  121.                     return $query;
  122.                 }
  123.             ])
  124.             ->add('estatus'ChoiceType::class, [
  125.                 'choices'  => [
  126.                     'Pendiente' => 'Pendiente',
  127.                     'Rechazado' => 'Rechazado',
  128.                     'Aceptado' => 'Aceptado',
  129.                     'Activo' => 'Activo',
  130.                     'Suspendido' => 'Suspendido'
  131.                 ],
  132.                 'attr' => ['class' => 'form-control']
  133.             ])
  134.         ;
  135.     }
  136.     public function configureOptions(OptionsResolver $resolver): void
  137.     {
  138.         $resolver->setDefaults([
  139.             'data_class' => Usuario::class,
  140.             'data_info' => array()
  141.         ]);
  142.     }
  143.     //Para subir formulario
  144. }