Diferencia entre revisiones de «SymfonyFormsSelect»
Ir a la navegación
Ir a la búsqueda
Línea 7: | Línea 7: | ||
|+ Ejemplo | |+ Ejemplo | ||
|- | |- | ||
<?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, | |||
]); | |||
} | |||
} | |||
|} | |} |
Revisión del 18:08 27 abr 2023
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, ]); } }