2017-03-06 91 views
0

我一直在使用Symfony 2.8上OhGoogleMapFormTypeBundle的一個稍微改編的版本作爲LocationType/MapType到我自己的包中。升級到Symfony的3.2,試圖挽救該位置出現錯誤升級到Symfony 3後,自定義FormType出現問題

無論屬性「LAT」,也沒有填寫數據時的方法「getLat()」,「LAT()」之一後, 「isLat()」,「hasLat()」,「__get()」存在並且在「LocationBundle \ Form \ LocationType」類中具有公共訪問權限。

自定義FormType通過LocationType :: class包含到另一個FormType(NodeType)中。

我一直在尋找Symfony的變化,特別是表單組件,看看是否有什麼影響數據讀取/寫入實體的方式,但找不到任何東西。

在的locationType,其中I包括的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"> 

不應我的實體接收陣列LatLng而不是其組件?在更新到Symfony 3之前,它就是這樣工作的。

我做錯了什麼?我是否需要定義缺失的方法?我是否需要實施ValueTransformer ..但是,爲什麼之前沒有必要?

+1

你能提供你正在使用的部分代碼嗎? –

+0

它特別指出'這個包與Symfony 2.1兼容.' – sakhunzai

+0

雖然有一些提交可以使這個包與symfony 3一起工作,但還是有一些問題阻止了,最突出的是不允許像' 'text''anymore,但應該是'TextType :: class' – Atan

回答

0

我發現了這個問題。在MapType :: configureOptions()中,我定義了'data_class' => LocationType::class,它應該是'data_class' => 'LocationBundle\Entity\Location'

將代碼轉換爲Symfony3規則時必然發生。我把這個問題留給別人......也許甚至是我自己。