Diferencia entre revisiones de «SymfonyFormsSelect»

De docs
Ir a la navegación Ir a la búsqueda
Línea 7: Línea 7:
|+ Ejemplo
|+ Ejemplo
|-
|-
|
 
|<?php
<?php
|
 
|namespace App\Form;
namespace App\Form;
|
 
|use App\Entity\PrediosAdmins;
use App\Entity\PrediosAdmins;
|use App\Entity\Usuario;
use App\Entity\Usuario;
|use App\Entity\Predios;
use App\Entity\Predios;
|use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\AbstractType;
|use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormBuilderInterface;
|use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
|use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\OptionsResolver\OptionsResolver;
|use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
 
|class PrediosAdminsType extends AbstractType
class PrediosAdminsType extends AbstractType
|{
{
|
 
|
 
|    public function buildForm(FormBuilderInterface $builder, array $options): void
    public function buildForm(FormBuilderInterface $builder, array $options): void
|    {
    {
|        $builder
        $builder
|            ->add('usuario', EntityType::class,array(
            ->add('usuario', EntityType::class,array(
|                'class' => Usuario::class,
                'class' => Usuario::class,
|                'label' => 'Usuario:',
                'label' => 'Usuario:',
|                'query_builder' => function(\App\Repository\UsuarioRepository $er) {
                'query_builder' => function(\App\Repository\UsuarioRepository $er) {
|                    return $er->createQueryBuilder('u')         
                    return $er->createQueryBuilder('u')         
|                                ->andWhere('u.rol = :val')             
                                ->andWhere('u.rol = :val')             
|                                ->setParameter('val', 5);
                                ->setParameter('val', 5);
|                },
                },
|                'choice_label' => function(\App\Entity\Usuario $er) {
                'choice_label' => function(\App\Entity\Usuario $er) {
|                    return $er->getApellidos().", ".$er->getNombres()." ( ".strtolower($er->getEmail())." )";
                    return $er->getApellidos().", ".$er->getNombres()." ( ".strtolower($er->getEmail())." )";
|                },
                },
|                'attr'  => [
                'attr'  => [
|                    'class' => 'form-control custom-select text-uppercase'
                    'class' => 'form-control custom-select text-uppercase'
|                ]
                ]
|            ))
            ))
|            ->add('predio', EntityType::class,array(
            ->add('predio', EntityType::class,array(
|                'class' => Predios::class,
                'class' => Predios::class,
|                'label' => 'Predio:',
                'label' => 'Predio:',
|                'attr'  => [
                'attr'  => [
|                    'class' => 'form-control custom-select text-uppercase'
                    'class' => 'form-control custom-select text-uppercase'
|                ]
                ]
|            ))
            ))
|        ;
        ;
|    }
    }
|
 
|    public function configureOptions(OptionsResolver $resolver): void
    public function configureOptions(OptionsResolver $resolver): void
|    {
    {
|        $resolver->setDefaults([
        $resolver->setDefaults([
|            'data_class' => PrediosAdmins::class,
            '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, ]); } }
Ejemplo