我在Symfony 2.7中开发应用程序,我从一个产品表(InProducto)生成了CRUD,它与OneToMany相关联到另一个表(InUnidadMedida)。 当我打开编辑表单时,ENTITY FIELD(UNIDAD DE MEDIDA表中的选择字段)中的值始终显示为相关表(UNIDAD DE MEDIDA)的第一个选项。并且它假设在表INPRODUCTO
的字段中获得值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;
}
产品表(实体)
/**
* 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")
Unidad de medida TABLE(实体)
/**
* 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();
}
答案 0 :(得分:0)
如果您已正确映射这些实体,Symfony会自动猜测表单类型。
所以,只需
->add('unidadMedida', null, array(
'choice_label' => 'nombre',
'expanded' => false,
'multiple' => false
))
并没有property
这样的选项。您的意思是property_path
吗?
答案 1 :(得分:0)
经过几个小时的刮擦,这非常简单,我将以下属性添加到我的字段中:
'by_reference' => true,
'mapped' => true,
感谢Dmitry Malyshenko的时间。