来自 child class 的 Symfony 表单不加载选择选项
Symfony form from child class does not load choice options
表格类型:
$builder
->add('tarifaReexpedicion', EntityType::class, array(
'class' => 'AppBundle:SubtarifaReexpedicion',
'label' => false,
'choice_label' => 'nombre',
'placeholder' => 'Elige una subtarifa...',
));
在parent class Subtarifa
中有一个名为nombre
的属性,带有getName 和setName...一切正常。
child class 是 SubtarifaReexpedicion
.
在这段代码中,当我更改 'class' => 'AppBundle:Subtarifa'
时一切正常,它会加载所有选项(全部,而不是该子 class 的特定选项)。
parent实体(Subtarifa)的配置:
* @ORM\Entity
* @ORM\Table(name="subtarifas")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="discr", type="string")
* @ORM\DiscriminatorMap({"FLETE" = "SubtarifaFlete", "REEXP" = "SubtarifaReexpedicion", "MASALLA" = "SubtarifaMasalla"})
欢迎任何帮助!
在此代码中:
->add('tarifaReexpedicion', EntityType::class, array(
'class' => 'AppBundle:SubtarifaReexpedicion',
'label' => false,
'choice_label' => 'nombre',
'placeholder' => 'Elige una subtarifa...',
));
您正在使用 AppBundle:SubtarifaReexpedicion 实体,而您想要的 choice_label 是 nombre
,因此请确保 AppBundle:SubtarifaReexpedicion
[=] 中有 getNombre()
方法24=].
choice_label
基本上调用回调就像您这样做一样:
'choice_label' => function ($tarifaReexpedicion) {
return $tarifaReexpedicion->getNombre();
}
表格类型:
$builder
->add('tarifaReexpedicion', EntityType::class, array(
'class' => 'AppBundle:SubtarifaReexpedicion',
'label' => false,
'choice_label' => 'nombre',
'placeholder' => 'Elige una subtarifa...',
));
在parent class Subtarifa
中有一个名为nombre
的属性,带有getName 和setName...一切正常。
child class 是 SubtarifaReexpedicion
.
在这段代码中,当我更改 'class' => 'AppBundle:Subtarifa'
时一切正常,它会加载所有选项(全部,而不是该子 class 的特定选项)。
parent实体(Subtarifa)的配置:
* @ORM\Entity
* @ORM\Table(name="subtarifas")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="discr", type="string")
* @ORM\DiscriminatorMap({"FLETE" = "SubtarifaFlete", "REEXP" = "SubtarifaReexpedicion", "MASALLA" = "SubtarifaMasalla"})
欢迎任何帮助!
在此代码中:
->add('tarifaReexpedicion', EntityType::class, array(
'class' => 'AppBundle:SubtarifaReexpedicion',
'label' => false,
'choice_label' => 'nombre',
'placeholder' => 'Elige una subtarifa...',
));
您正在使用 AppBundle:SubtarifaReexpedicion 实体,而您想要的 choice_label 是 nombre
,因此请确保 AppBundle:SubtarifaReexpedicion
[=] 中有 getNombre()
方法24=].
choice_label
基本上调用回调就像您这样做一样:
'choice_label' => function ($tarifaReexpedicion) {
return $tarifaReexpedicion->getNombre();
}