0

在FOSRestBundle:註釋,我想是因爲我從數據庫中獲取的屬性名稱(未知數量的屬性)使用多個@VirtualProperty動態名FosRestBundle:動態VirtualProperties

class User 
{ 
    private $id; 
    private $name; 

    /** 
    * @Serializer\VirtualProperty 
    * 
    * @return array 
    */ 
    public function getSomeMethod() 
    { 
     return array('property_name1'=> 'value1', 'property_name2'=>'value2'); 
    } 
} 

凡property_name1 & property_name2 .. property_name3 ..等是動態的無限數

我想將它們設置爲虛擬屬性,每個屬性都有一個字符串值。

我不想將它們設置爲具有一個屬性的數組。

如果沒有辦法做到這一點,請讓我知道我是否可以從控制器執行相同的任務?

+1

在接下來的數組您可能能夠做到這一點使用'@Serializer \ Inline'使購買的數組的屬性最多是父對象的屬性。 – qooplmao

+0

謝謝你,像一個魅力工作! 請將其張貼在新的答案中以標記爲已接受 – semsem

回答

1

本來評論...

您可能可以使用@Serializer\Inline這樣做,以便購買的數組的屬性可以是父對象的屬性。

一些更多的信息

這基本上可以讓你有暴露的性質或與數組或對象進行買漲是父對象的屬性鍵/值。

例如..

class Id 
{ 
    /** 
    * @Expose 
    */ 
    private $id; 

    //... 
} 

class Parent 
{ 
    /** 
    * @Expose 
    * @Inline 
    */ 
    private $id; 

    /** 
    * @Expose 
    * @Inline 
    */ 
    private $name = 'parent'; 

    /** 
    * @Expose 
    * @Inline 
    */ 
    private [ 
     'key' => 'value', 
    ]; 

    public function __construct() 
    { 
     $this-id = new Id('an-id'); 
    } 
} 

將首先轉換爲類似於系列化

[ 
    'id' => 'an-id', 
    'name' => 'parent', 
    'key' => 'value', 
]