升级到Symfony 3后,自定义FormType会出现问题

升级到Symfony 3后,自定义FormType会出现问题,symfony,symfony-forms,Symfony,Symfony Forms,我一直在使用Symfony 2.8上的稍加修改的版本作为LocationType/MapType,并将其应用到我自己的包中。升级到Symfony 3.2后,在尝试保存为该位置填写的数据时,我收到错误消息 属性“lat”或方法“getLat()”、“lat()”、“isLat()”、“hasLat()”、“\uu get()”中的任何一个都不存在,并且在类“LocationBundle\Form\LocationType”中具有公共访问权限 自定义FormType通过LocationType::c

我一直在使用Symfony 2.8上的稍加修改的版本作为LocationType/MapType,并将其应用到我自己的包中。升级到Symfony 3.2后,在尝试保存为该位置填写的数据时,我收到错误消息

属性“lat”或方法“getLat()”、“lat()”、“isLat()”、“hasLat()”、“\uu get()”中的任何一个都不存在,并且在类“LocationBundle\Form\LocationType”中具有公共访问权限

自定义FormType通过LocationType::class包含到另一个FormType()中

我一直在查看Symfony中的更改,特别是表单组件,以查看是否有什么影响数据读取/写入实体的方式,但找不到任何内容

LocationType中的代码(其中包括MapType)是

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('LatLng', MapType::class, array(
            'default_lat' => '37.06394430056685',
            'default_lng' => '-3.09814453125',
            'map_width' => 600,
            'type' => HiddenType::class
        ))
        ;
}
在最终视图(浏览器)中,使用

<input id="node_Location_LatLng_lat" name="node[Location][LatLng][lat]" value="36.945971" type="hidden"><input id="node_Location_LatLng_lng" name="node[Location][LatLng][lng]" value="-3.1785935000000336" type="hidden">

我的实体不应该接收阵列板条而不是其组件吗?这就是它在升级到Symfony 3之前的工作原理


我做错什么了吗?我需要定义缺少的方法吗?我是否必须实现ValueTransformer。。但是,为什么以前不需要呢?

我发现了问题。在MapType::configureOptions()中,我定义了
'data\u class'=>LocationType::class
,它应该是
'data\u class'=>'LocationBundle\Entity\Location'


这一定是在将代码转换为Symfony3规则时发生的。我把这个问题留给其他人。。。甚至可能是我自己。

你能提供你正在使用的部分代码吗?它特别说明
此捆绑包与Symfony 2.1兼容。
虽然有一些承诺使此捆绑包与Symfony 3兼容,但有一些问题阻止了这一点,最突出的类型是不允许再像
'text'
这样的字符串,但应该是
TextType::class
对不起。。。我刚刚意识到我没有更新存储库,链接到了错误的地方。真的很抱歉提供了错误的信息:-(我希望它现在更有意义。