Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony2表格-复合体“;不动产;选项_Symfony - Fatal编程技术网

Symfony2表格-复合体“;不动产;选项

Symfony2表格-复合体“;不动产;选项,symfony,Symfony,我有以下实体,具有主要属性: 位置 身份证 名字 地址 类型 站 位置标识 三角形 海拔高度 学会 位置标识 删节 部门 Station和Institute从Location“继承”:这两个表的任何Location\u id都引用Location表中的id 正如您所猜测的,不同类型的地点有着共同的特点(在地点中收集),但也有独立的特点(在车站和研究所表格中收集) 我也有一个实体“项目”,项目可以放置和移动在一个位置,无论它是一个站点还是一个机构 因此,在我的“移动项目”表单中,我

我有以下实体,具有主要属性:

  • 位置
    • 身份证
    • 名字
    • 地址
    • 类型
    • 位置标识
    • 三角形
    • 海拔高度
  • 学会
    • 位置标识
    • 删节
    • 部门
Station和Institute从Location“继承”:这两个表的任何Location\u id都引用Location表中的id

正如您所猜测的,不同类型的地点有着共同的特点(在地点中收集),但也有独立的特点(在车站和研究所表格中收集)

我也有一个实体“项目”,项目可以放置和移动在一个位置,无论它是一个站点还是一个机构

因此,在我的“移动项目”表单中,我需要在下拉列表中显示所有位置以选择所需位置。为此,我使用GenemuFormBundle-select2

我的问题:我想显示:

  • “location.name-station.trigam”,如果location.type是station
  • 如果location.type为Institute,“location.name-inittute.abrevision”
我知道“选择”下拉列表中显示的内容由“属性”选项决定:

“labelSelect2”是指实体位置的函数getLabelSelect2()。 但不幸的是,即使我知道location.type,我也不知道如何从函数location::getLabelSelect2()访问station.trigram或institute.abrevision

你知道怎么做吗?

你是如何处理你的“遗产”的?您使用单桌/多桌吗?还是你自己处理继承?这是一个“自制”继承,我不使用链接中定义的继承映射。唯一的问题是,我在Station.Location和Location.id上的位置和站之间有一对一的关系(对于institute也是如此)。我没有真正研究“真正的”继承映射,因为我认为这样做将无法将Location用作常规表。不管怎样,我还是要看一看,这可能是一个更好的方法,一般来说,不仅仅是关于这个特殊的问题。
$builder->add('location', 'genemu_jqueryselect2_entity', array(
            'class'         => 'MyBundle:Location',
            'property'      => 'labelSelect2', 
            'query_builder' => function(LocationRepository $lr) {
                    return $lr->createQueryBuilder('l')
                              ->orderBy('l.name', 'ASC');}
        ))