来自 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();
}