FosRestBundle:动态虚拟属性
FosRestBundle: Dynamic VirtualProperties
在 FOSRestBundle : Annotations 中,我想使用多个 @VirtualProperty 和动态名称,因为我从数据库中获取属性名称(未知数量的属性)
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 .. 等是动态的无限数字
我想将它们设置为虚拟属性,每个 属性 都有一个字符串值。
我不想将它们设置为一个数组 属性。
如果没有办法做到这一点,请告诉我是否可以从控制器执行相同的任务?
由于 FOSRestBundle 在底层使用 JMSSerializer,并且您希望能够完全控制序列化程序 returns 和输出数据强烈依赖于它接收到的输入,您可以为一个特定的 class.
有关更多详细信息,请参阅:
http://jmsyst.com/bundles/JMSSerializerBundle/master/configuration
Creating a JMS Serializer handler in symfony2
原来是评论...
You might be able to do this using @Serializer\Inline
so that the properties of the array of bought up to be properties of the the parent object.
更多信息
这实际上允许您将要购买的数组或对象的公开属性或 keys/value 作为父对象的属性。
例如..
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',
]
在 FOSRestBundle : Annotations 中,我想使用多个 @VirtualProperty 和动态名称,因为我从数据库中获取属性名称(未知数量的属性)
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 .. 等是动态的无限数字
我想将它们设置为虚拟属性,每个 属性 都有一个字符串值。
我不想将它们设置为一个数组 属性。
如果没有办法做到这一点,请告诉我是否可以从控制器执行相同的任务?
由于 FOSRestBundle 在底层使用 JMSSerializer,并且您希望能够完全控制序列化程序 returns 和输出数据强烈依赖于它接收到的输入,您可以为一个特定的 class.
有关更多详细信息,请参阅:
http://jmsyst.com/bundles/JMSSerializerBundle/master/configuration
Creating a JMS Serializer handler in symfony2
原来是评论...
You might be able to do this using
@Serializer\Inline
so that the properties of the array of bought up to be properties of the the parent object.
更多信息
这实际上允许您将要购买的数组或对象的公开属性或 keys/value 作为父对象的属性。
例如..
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',
]