2014-05-08 109 views
0

我做了Symfony2的Web应用程序,其中派斯具有西服的Arraycolletion:对象无法转换为字符串

派斯:

/** 
* @ORM\OneToMany(targetEntity="Acc\ApssBundle\Entity\Suit", mappedBy="pais", cascade={"persist", "remove"}) 
* @Assert\Valid() 
*/ 
protected $suits; 

/** 
* Constructor 
*/ 
public function __construct() 
{ 
    $elements = array(new Suit('Suit1'), new Suit('Suit2'), new Suit('Suit3'), new Suit('Suit4'), new Suit('Suit5')); 

    $this->suits = new \Doctrine\Common\Collections\ArrayCollection($elements); 

} 

西装

/** 
* @ORM\ManyToOne(targetEntity=Acc\ApssBundle\Entity\Pais", inversedBy="suits") 
*/ 
public $pais; 

PaisSuitType

$builder->add('suits', 'collection', array(
       'options' => array('data_class' => 'Acc\ApssBundle\Entity\Suit'), 
       'prototype' => true, 
      )); 

控制器:

$paises = array($es = new Pais(), 
       $it = new Pais(), 
       $mx = new Pais(), 
       $br = new Pais() 
      ); 
foreach ($paises as $pais){ 
    $form[$i] = $this->createForm(new PaisType(),$pais); 
    $forms[ 'form'.(string)$i ] = $form[$i]->createView() ; 
    $i++; 
} 

嫩枝模板:

{% for suit in form0.suits %} 
    <td align = "center">{{ form(suit) }}</td> 
{% endfor %} 

在树枝模板会出现错误。

+0

而不是你当前问题,您在'$ pais'的orm中没有'JoinColumn' – Javad

回答

0

我与另一个类CheckType解决这个问题:

class CheckType extends AbstractType 
{ 

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

    $builder->add('check', 'checkbox',array('label'=> ' ')); 

} 

public function getName() 
{ 
    return 'check'; 
} 
} 

而且ASIGN的PaisSuitType中的类:

$builder->add('name','text') 
->add('suits', 'collection', array(
     'options' => array('data_class' => 'Acc\ApssBundle\Entity\Suit'), 
     'prototype' => true, 
     'type' => new CheckType(), 
     )) ; 
0

Suit类定义__toString方法返回name(使用属性),例如:

public function __toString() { 
    return (string)$this->xxx; 
}