SymfonyFormsSelect
Ir a la navegación
Ir a la búsqueda
Para llenar un select con consultas de SQL utilizamos "query_builder" y para elegir los campos se utiliza "choice_label", todo esto en el archivo Form\***Type, que es donde se crea el formulario.
ejemplo aqui se crea un formulario en donde uno de los select se llena con una consulta realizada con "query_builder" de donde seleccionamos los campos con "choice_label"
<?php | namespace App\Form; | use App\Entity\PrediosAdmins; | use App\Entity\Usuario; | use App\Entity\Predios; | use Symfony\Component\Form\AbstractType; | use Symfony\Component\Form\FormBuilderInterface; | use Symfony\Component\Form\Extension\Core\Type\SubmitType; | use Symfony\Component\Form\Extension\Core\Type\TextType; | use Symfony\Component\OptionsResolver\OptionsResolver; | use Symfony\Bridge\Doctrine\Form\Type\EntityType; | class PrediosAdminsType extends AbstractType | { | public function buildForm(FormBuilderInterface $builder, array $options): void | { | $builder | ->add('usuario', EntityType::class,array( | 'class' => Usuario::class, | 'label' => 'Usuario:', | 'query_builder' => function(\App\Repository\UsuarioRepository $er) { | return $er->createQueryBuilder('u') | ->andWhere('u.rol = :val') | ->setParameter('val', 5); | }, | 'choice_label' => function(\App\Entity\Usuario $er) { | return $er->getApellidos().", ".$er->getNombres()." ( ".strtolower($er->getEmail())." )"; | }, | 'attr' => [ | 'class' => 'form-control custom-select text-uppercase' | ] | )) | ->add('predio', EntityType::class,array( | 'class' => Predios::class, | 'label' => 'Predio:', | 'attr' => [ | 'class' => 'form-control custom-select text-uppercase' | ] | )) | ; | } | public function configureOptions(OptionsResolver $resolver): void | { | $resolver->setDefaults([ | 'data_class' => PrediosAdmins::class, | ]); | } |
| | |}