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

[SOLUCIONADO] crear un array de una clase filtrada por un Type

Estas en el tema de crear un array de una clase filtrada por un Type en el foro de Symfony en Foros del Web. Hola, Estoy intentado crear un test un poco especial, tengo una clase Comentario y otra ComentarioTest que auto agrega valores. Bueno la cosa es que ...
  #1 (permalink)  
Antiguo 30/03/2013, 15:58
 
Fecha de Ingreso: septiembre-2009
Ubicación: Madrid
Mensajes: 25
Antigüedad: 15 años, 2 meses
Puntos: 0
crear un array de una clase filtrada por un Type

Hola,

Estoy intentado crear un test un poco especial, tengo una clase Comentario y otra ComentarioTest que auto agrega valores. Bueno la cosa es que de esa clase ComentarioTest quiero que genere el form de comentarioType y que filtre que campos quiero y cuales no. Y que saque el array con formato que se envia en el html.

Pongo el codigo de lo que tengo que seguramente no me haya explicado bien.

Código:
// Crea clase apartir der comentario y declara unos valores
$comentario = new ComentarioTest();

// Crea el form para realizar un filtro de los campos que quiero o no
$form = $this
                    ->container
                    -> get('form.factory')
                    ->create(
                        new ComentarioType(), $comentario
                    );

/*
 y ahora querria que me devolviera un array como el que se envia en el post y los valores declarados por defecto en comentarioTest
array(
   'comentario[id]' => 1,
   'comentario[comentario]' => 'comentario test',
...
)
*/
Porque quiero realizar esto asi?, xq no quiero hardcodear el array post que voy a enviar.
Espero que me pueda ayudar que este tema me tiene frito hace ya un par de dias..

Un saludo y muchas gracias por vuestro tiempo.
  #2 (permalink)  
Antiguo 01/04/2013, 16:39
Avatar de fhederico  
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 15 años, 3 meses
Puntos: 23
Respuesta: crear un array de una clase filtrada por un Type

Hola,

No entiendo bien tu pregunta, haber si logro entenderte, dices "Bueno la cosa es que de esa clase ComentarioTest quiero que genere el form de comentarioType y que filtre que campos quiero y cuales no."

Se supone que tu en tu archivo "comentarioType", indicas o mejor dicho agregas que campos deseas mostrar y cuales no, por ejemplo si en tu identidad tienes 8 propiedades, en el formulario puedes mostrar 3 o 4 o las 8.

Sobre esto "Y que saque el array con formato que se envia en el html.", no tengo idea a que te refieres :D

Si quieres definir que valores deben tener por defecto, eso lo haces en la funcion "__construct" de tu entidad

Bueno, ando medio lento hoy asi que no te puedo ayudar mucho :D
  #3 (permalink)  
Antiguo 01/04/2013, 23:52
 
Fecha de Ingreso: septiembre-2009
Ubicación: Madrid
Mensajes: 25
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: crear un array de una clase filtrada por un Type

Cita:
Iniciado por fhederico Ver Mensaje
Hola,

No entiendo bien tu pregunta, haber si logro entenderte, dices "Bueno la cosa es que de esa clase ComentarioTest quiero que genere el form de comentarioType y que filtre que campos quiero y cuales no."

Se supone que tu en tu archivo "comentarioType", indicas o mejor dicho agregas que campos deseas mostrar y cuales no, por ejemplo si en tu identidad tienes 8 propiedades, en el formulario puedes mostrar 3 o 4 o las 8.

Sobre esto "Y que saque el array con formato que se envia en el html.", no tengo idea a que te refieres :D

Si quieres definir que valores deben tener por defecto, eso lo haces en la funcion "__construct" de tu entidad

Bueno, ando medio lento hoy asi que no te puedo ayudar mucho :D
Ante todo gracias por tu ayuda fhederico, la finalidad es sencilla como dices con el comentarioType agrego los campos que desee de una clase pero en vez de sacar esos compos para un formulario html quiero que me lo saque en un array.

Osea que imaginate que en vez de generar el formulario html quiero enviar ese formulario via curl o directamente post (desde un controller) a una direccion y quiero hacer esto sin hardcodear el array.

No sé si me he explicado mejor :P, a ver si lo podemos resolver que tiene que ser una tonteria enorme...
  #4 (permalink)  
Antiguo 02/04/2013, 00:16
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: crear un array de una clase filtrada por un Type

Para que quieres un array si ya tienes una entidad con datos bindeados ?, de todas formas prueba con $form->getValues()(no se si existe..., no he mirado el API de la clase) y por campo puedes acceder vía $form->get('foo')->getData()
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 02/04/2013, 14:14
 
Fecha de Ingreso: septiembre-2009
Ubicación: Madrid
Mensajes: 25
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: crear un array de una clase filtrada por un Type

Ya he encontrado la solucion aunque utilizando funciones deprecated que se retiraran para la version 2.3, dejo el codigo por si alguien le interesa

Código:
    /**
     * @param \Symfony\Component\Form\Form $form
     * @return array
     */
    public function getFormInArray(\Symfony\Component\Form\Form $form) {
        $formResult = array();

        $formView=$form->createView();
        /* @var \Symfony\Component\Form\FormView $child  */

        foreach ($formView as $child) {
            $formResult[$child->get('full_name')] = $child->get('value');
        }

        return $formResult;
    }

Etiquetas: symfony2
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 17:00.