Foros del Web » Programando para Internet » PHP » Symfony »

[SOLUCIONADO] Formulario con combo a vista

Estas en el tema de Formulario con combo a vista en el foro de Symfony en Foros del Web. Buenas. Tengo una duda que no encuentro en la documentación. En mi esquema, tengo tablas asociadas entre sí y algunas vistas que traen datos de ...
  #1 (permalink)  
Antiguo 29/04/2013, 14:05
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 3 meses
Puntos: 2
Formulario con combo a vista

Buenas.
Tengo una duda que no encuentro en la documentación.
En mi esquema, tengo tablas asociadas entre sí y algunas vistas que traen datos de otro esquema principal.
El tema es, dentro de un formulario, necesito crear un combo con ID - Descripción como valores, cuyos valores no provienen de otra entidad sino de la consulta hacia una vista en el esquema.

¿Qué me recomiendan?
Generar la entidad con una clave principal que no es precisamente Id puede generar inconvenientes cuando quiera realizar la relación entre una y la otra...
Se me ocurre que podría ser útil cargar el combo con una consulta directamente, pero no encuentro documentación de cómo hacerlo.

Alguien hizo alguna vez algo parecido?
Aclaro que tengo instalado Symfony 2.2.0 por las dudas.

Gracias!
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #2 (permalink)  
Antiguo 29/04/2013, 15:04
Avatar de jhg
jhg
 
Fecha de Ingreso: marzo-2012
Mensajes: 96
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Formulario con combo a vista

Aviso que soy nuevo en Symfony y esto te lo respondera mejor alguien con más experiencia. En http://symfony.com/doc/current/refer...tion.html#type aparece:

Código:
$builder->add('favorite_cities', 'collection', array(
    'type'   => 'choice',
    'options'  => array(
        'choices'  => array(
            'nashville' => 'Nashville',
            'paris'     => 'Paris',
            'berlin'    => 'Berlin',
            'london'    => 'London',
        ),
    ),
));
Por si te sirve de ayuda eso, que no estoy seguro, pero bueno, por intentar ayudar. Y lo mismo si haces la culsuta y la conviertes en un array que puedas pasarle como parametro puedes hacer eso en el formulario.
__________________
JHG
  #3 (permalink)  
Antiguo 29/04/2013, 15:07
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 3 meses
Puntos: 2
Respuesta: Formulario con combo a vista

Gracias jhg!
Esto lo tengo visto, lo que no encuentro es cómo pasarle como parámetro el resultado de una consulta.
La idea es justamente hacer algo así pero cargando el conjunto de opciones desde una NativeQuery de la vista.
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #4 (permalink)  
Antiguo 29/04/2013, 15:22
Avatar de jhg
jhg
 
Fecha de Ingreso: marzo-2012
Mensajes: 96
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Formulario con combo a vista

El resultado de la consulta es un array de objetos, podrias recorrerlo y usar las propiedades de cada uno que necesites para ir creando un array que pasarle al código del post anterior.
__________________
JHG
  #5 (permalink)  
Antiguo 29/04/2013, 17:08
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: Formulario con combo a vista

Puedes utilizar el query builder http://stackoverflow.com/questions/1...ith-parameters de los form's

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #6 (permalink)  
Antiguo 30/04/2013, 11:25
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 3 meses
Puntos: 2
Respuesta: Formulario con combo a vista

Gracias masterpuppet!

Estoy probando con el link que me pasaste, pero no me reconoce entityRepository. Me da este error:

"Class RelOf\RelOfBundle\Form\EntityRepository does not exist
500 Internal Server Error - ReflectionException"

El código está asi:

Código PHP:
namespace RelOfRelOfBundleForm;

use 
SymfonyComponentFormAbstractType;
use 
SymfonyComponentFormFormBuilderInterface;
use 
SymfonyComponentOptionsResolverOptionsResolverInterface;
use 
RelOfRelOfBundleEntityVdf;

class 
OpcionType extends AbstractType
{
    public function 
buildForm(FormBuilderInterface $builder, array $options)
    {
        
$builder
            
->add('anio')
            ->
add('idf','entity', array('class' => 'RelOf\RelOfBundle\Entity\Vdf',
    
'property' => 'line',
    
'query_builder' => function(EntityRepository $er ) {
        return 
$er->createQueryBuilder('v')
                  ->
orderBy('v.Descripcion''ASC')
                  ->
where('v.descripcion like ?'$des )
                  ->
setParameter('%SDOR%'$des);
                  })) 
Las barras invertidas en los nombres del bundle, etc no salieron pero están en el código que tengo :)
__________________
Why can't we not be sober?
www.partitorium.com.ar

Última edición por verinchi; 30/04/2013 a las 11:26 Razón: Barra invertida no se imprime
  #7 (permalink)  
Antiguo 30/04/2013, 21:03
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: Formulario con combo a vista

Te falta importar la clase EntityRepository, si no recuerdo mal seria Doctrine\ORM\EntityRepository

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #8 (permalink)  
Antiguo 02/05/2013, 07:31
 
Fecha de Ingreso: abril-2013
Mensajes: 29
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Formulario con combo a vista

agrega antes de tu clase la siguiente linea en la definición de tu formulario y luego configura la definición de tu campo con los parametros que necesites, si te fijas en este ejemplo acceso a la entidad Establecimientos del bundle SaludOfertasBundle y muestro la propiedad nombre en el combo desplegable

// linea añadida para poder utilizar function EntityRepository
use Doctrine\ORM\EntityRepository;
......

class OfertasType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{

$builder
->add('idestable', 'entity',
array('label'=> 'Establecimiento','class'=>'SaludOfertasBundle:Est ablecimientos', 'property'=>'nombre',
'empty_value' => 'Seleccione..',
'required' => true,
'query_builder' => function(EntityRepository $er)
{return $er->createQueryBuilder('e')->orderBy('e.nombre', 'ASC');}
))
}
}
.....
  #9 (permalink)  
Antiguo 02/05/2013, 10:07
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 3 meses
Puntos: 2
Respuesta: Formulario con combo a vista

:) ya si! lo tengo!

Muchísimas gracias! no solo me faltaba incluír la clase EntityRepository sino que tenía algunos errores en la definición de la entidad.

solucionado esto, quedó perfecto!!!! GRACIAS!!!! miles :)
__________________
Why can't we not be sober?
www.partitorium.com.ar

Etiquetas: combo, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:03.