Symfony2表单字段类型实体未在表单编辑时设置所选选项


Symfony2 form field type entity not setting selected option on form edit

我在Form/*Type.php类中有以下FormBuilder:

<?php
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('tpmTargetId', null, array('label' => 'Target', 'required' => true))
        ->add('tpmSourcePropertyId', 'entity', array( 'label' => 'Global property', 'class' => 'TI'ML'SyncBundle'Entity'MlProperties'))
    ;
}

问题是字段tpmSourcePropertyId,创建新条目时,它会在下拉字段中显示正确的选项,保存时会插入正确的ID,但当尝试编辑该条目时,下拉默认为选项#1,而不是保存的ID。

如果我将字段呈现为类型文本,它将显示存储的正确ID。

我似乎已经提出了这个问题,但我似乎已经在使用拟议的解决方案。

我可以做些什么来调试它?非常感谢。

---------更新的

    tarEmpPropertyId:
        type: integer
        nullable: false
        unsigned: true
        comment: ''
        column: tar_emp_property_id

Entity''MlTargets.php

 /**
 * @var integer
 */
private $tarEmpPropertyId;

/**
 * Set tarEmpPropertyId
 *
 * @param integer $tarEmpPropertyId
 * @return MlTargets
 */
public function setTarEmpPropertyId($tarEmpPropertyId)
{
    $this->tarEmpPropertyId = $tarEmpPropertyId;
    return $this;
}
/**
 * Get tarEmpPropertyId
 *
 * @return integer 
 */
public function getTarEmpPropertyId()
{
    return $this->tarEmpPropertyId;
}

当您声明一个属性时,您的意思是引用一个对象。

在数据库上,列将保存对象的id,但symfony将加载它的引用,并且您将操作对象

因此,您可以尝试

->add('tpmSourceProperty', 'entity', array('label' => 'Global property', 'class' =>'TI'ML'SyncBundle'Entity'MlProperties'))