Ver Mensaje Individual
  #3 (permalink)  
Antiguo 05/07/2013, 07:47
Fennesz
 
Fecha de Ingreso: febrero-2010
Mensajes: 36
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problema con Formulario tipo "collection"

Hey, gracias por la respuesta masterpuppet. Esa fase ya la he superado, aunque no lo hice como tu me sugieres. Lo dejé como estaba pero cree una clase Entity Cart, con propiedades id, quantity y delete (el nombre de los forms) y funciona perfecto.

Lo que ahora no logro obtener es pasarle unos datos para que pinte las cantidades, e ids del cart.

Lo hice pásandole en el constructor el cart en forma de array, todo perfecto, pero o me muestra "Array" en el value, o si hago un foreach me muestra solo el último valor. Alguna idea de como pasar datos al builder?

Tengo esto, (las dos posibilidades. No funciona ni con el bucle en el constructor, ni con él en el builder). Alguien tiene una idea?

Gracias

Código PHP:

namespace srcForm
;

use 
SymfonyComponentValidatorConstraints as Assert;
use 
SymfonyComponentFormAbstractType;
use 
SymfonyComponentFormFormBuilderInterface;

class 
Quantity extends AbstractType{

    public 
$cart;
    public 
$id = array();
    public 
$cantidad = array();


    function 
__construct($cart)
    {

    
$this->cart $cart;

   foreach (
$this->cart as $id => $cantidad) {

    
$this->id[] = $id;
    
$this->cantidad[] = $cantidad;

    }

    }

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




   foreach (
$this->id as $id) {

        
$builder->add('id''collection', array(
            
'type'   => 'hidden''options' => array(
             
'attr' => array('value' => (string)$id),
        )));
    }
        
$builder->add('quantity''collection', array(
            
'type'   => 'integer''options' => array(
             
'attr' => array('value' => (int)$this->cantidad),
        )));

        
$builder->add('delete''collection', array(
            
'type'   => 'integer''options' => array(
             
'attr' => array('value' => 0),
        )));



     }


    public function 
getName(){
        return 
"quantityform";
    }