我正在使用Symfony 2.7中的應用程序,我從一個PRODUCT OneTable(InProducto)將OneToMany關聯到另一個表(InUnidadMedida)中生成CRUD。 當我打開編輯表單時,實體字段(UNIDAD DE MEDIDA表中的選擇字段)中的值總是出現在相關表(UNIDAD DE MEDIDA)的第一個選項中。而且它想獲得表INPRODUCTO如何在編輯表單(Symfony2)中將數據庫中的值設置爲我的實體字段?
InProductoType的字段中的值:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('nombre')
->add('descripcion')
->add('unidadMedida', 'entity', array(
'class' => 'NivalInventarioBundle:InUnidadMedida',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('u')
->orderBy('u.nombre', 'ASC');
},
'choice_label' => 'nombre',
'by_reference' => false,
'property' => 'type',
'expanded' => false,
'multiple' => false
))
}
控制器:
private function createEditForm(InProducto $entity)
{
$form = $this->createForm(new InProductoType(), $entity, array(
'action' => $this->generateUrl('inproducto_update', array('id' => $entity->getIdProducto())),
'method' => 'PUT',
));
$form->add('submit', 'submit', array('label' => 'Guardar'));
return $form;
}
PRODUCTO表(實體)
/**
* InProducto
*
* @ORM\Table(name="in_producto")
* @ORM\Entity
*/
class InProducto
{
/**
* @ORM\ManyToOne(targetEntity="InSubLinea", inversedBy="InProducto")
* @ORM\JoinColumn(name="id_sub_linea", referencedColumnName="id_sub_linea")
*/
protected $subLinea;
/**
* @ORM\ManyToOne(targetEntity="InUnidadMedida", inversedBy="InProducto")
* @ORM\JoinColumn(name="id_unidad_medida", referencedColumnName="id_unidad_medida")
*/
protected $unidadMedida;
/**
* @var integer
*
* @ORM\Column(name="id_producto", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
團結報德medida TABLE(entity)
/**
* InUnidadMedida
*
* @ORM\Table(name="in_unidad_medida")
* @ORM\Entity
*/
class InUnidadMedida
{
/**
* @ORM\OneToMany(targetEntity="InProducto", mappedBy="InUnidadMedida")
*/
protected $InProducto;
public function __construct()
{
$this->InProducto = new ArrayCollection();
}
這很奇怪。他們必須默認設置這些值。它必須是重新定義它的代碼中的一些東西。 –