Ayuda coleccion de formularios Symfony2

Merkury

Buenas noches gente!

Estoy trasteando con Symfony y tengo una duda.

Os explico yo tengo dos entidades con una relación 1 - N y sus FormType correspondientes, entonces a la hora de hacer el formulario para poder editar los datos de la entidad principal, en el TypeForm hago esto:

 public function buildForm(FormBuilderInterface $builder, array $options)
    {

    $builder
        ->add('id', 'text')
        ->add('nombre', 'text', array('attr' => array('placeholder' => 'Nombre')))
        ->add('descripcion', 'text', array('attr' => array('placeholder' => 'Descripcion')))
        ->add('tipo', 'entity', array('class' => 'RateItBundle:Tipo', 'property' => 'nombre'))
        ->add('genero', 'entity', array('class' => 'RateItBundle:Genero', 'property' => 'nombre'))
        ->add('status', 'entity', array('class' => 'RateItBundle:Status', 'property' => 'nombre'))
        ->add('fechaCreacion', 'date', array(
        'widget' => 'single_text'))
        ->add('fechaModificacion', 'date', array('widget' => 'single_text', 'disabled' => true))
        ->add('validated', 'choice', array('choices' => array('0' => 'No validado','1' => 'Validado')))
        ->add('slug', 'text')
        ->add('version', 'collection', array('type' => new VersionType()))
    ;
}

Con esto cuando genere forms, en teoria irá toda la información del producto y de su versión, que se obtiene a través de la relacion.

En el controller de hago esto:

 $em = $this->getDoctrine()->getManager();

    $product = $em->getRepository('RateItBundle:Producto')
        ->find($prodID);

    $form = $this ->createForm(new ProductoType(), $product );

           return $this->render('AcmeAdminBundle:Home:updateprod.html.twig',
        array('updateForm' => $form->createView()));

Esto me genera un formulario perfectamente bonito peeeeeeeeeeeeeeeero la putada es que en twig no puedo personalizar NADA de la forma en que se visualiza la versión, técnicamente aparece todo que necesito y como lo necesito pero se ve así:

Aparece el índice del Array y he probado mil cosas y no se como salir de esta, ¿alguien me ayuda?

RPV -> Vengo a que me hagáis el trabajo como todos ultimamente XD

Cobre

Puedes personalizar el form campo por campo en twig:

http://symfony.com/doc/current/book/forms.html#rendering-each-field-by-hand

1 respuesta
Merkury

#2 Ehh... gracias por la ayuda, pero como ya he comentado, cuando incluyes una colección en el FormType te la escupe como un objeto único.

De todas formas, ¿crees que no me he leído la documentación básica de formularios?

En serio muchas gracias por contestar, pero antes leeros bien el tema por favor.

#4 Si

Cobre

Has probado
{{ form_label(form.version.num) }}
{{ form_errors(form.version.num) }}
{{ form_widget(form.version.num) }}

{{ form_label(form.version.icono) }}
{{ form_errors(form.version.icono) }}
{{ form_widget(form.version.icono) }}

{{ form_label(form.version.changelog) }}
{{ form_errors(form.version.changelog) }}
{{ form_widget(form.version.changelog) }}

Al escribir campo por campo, creo que no te muestra el el indice.

2 respuestas
Merkury

#4 No tampoco es asi.

He encontrado la forma, tengo que indicar la posición del array e imagino que tendré que ingeniarmelas para iterar y controlar la posición...

Usuarios habituales

  • Merkury
  • Cobre