我正在尝试使用Symfony2 / Twig构建一个嵌入式表单,其中我想在表单上显示每行的映射实体的id。
我这样做了:
{% for p in form.products %}
<tr>
<td>{{p.vars.data.id}}</td>
</tr>
{% endfor %}
这很简单......但没有打印出来。 我尝试了以下方法:
{% for p in form.products %}
<tr>
<td>{{dump(p.vars)}</td>
</tr>
{% endfor %}
结果出人意料:
array:27 [▼ "value" => ItemProduct {#857 ▼
-id: null
#enabled: false
#commission: 0.0
#support: 1
-quantity: 0
-id: 1 }
元素的两个id
属性。我不知道它甚至是可能的,我不明白这是怎么发生的,我的代码非常简单,我甚至在使用更复杂的嵌入式表格之前从未遇到过这样的问题。
以下是我的其余代码:
ItemProductType
class ItemProductType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder -> add ( 'artist_commission' , 'text' );
}
// ...
}
ItemProductsType
class ItemProductsType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('products', 'collection', array('type' => new ItemProductType()));
}
ItemProduct
/**
* @ORM\Table(name="item_products")
* @ORM\Entity(repositoryClass="APIBundle\Entity\ItemProductRepository")
*/
class ItemProduct extends Product
{
/**
* @var integer
*
* @ORM\Id()
* @ORM\Column(name="id", type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="boolean")
*/
protected $enabled;
/**
* @ORM\Column(type="float")
*/
protected $commission;
/**
* @ORM\Column(type="integer")
*/
protected $support;
}
答案 0 :(得分:0)
我想我终于找到了什么问题(写这个问题可能让我对我的代码有了新的看法。)
我的ItemProduct
继承了Product
类,该类具有自己的id
属性。由于有两个不同的表,id
属性未正确合并,Symfony使两个不同的id
属性可见。
由于其中只有一个实际上与数据相关联,另一个是空的。
即使问题得到解决并且我的代码中出现了更大的问题,我仍然对这种行为的解释感兴趣,以及如何使实体中同名的属性共存。