我正在寻找一个简单,愚蠢的解决方案,在symfony2中将序列化字段的输出更改为替换多个模式(用于用户消息等)。
不幸的是,使用Custom De-/Serialization Handlers会破坏我的所有政策。我被迫手工返回所有序列化数据。
Model类:
//src/Acme/DemoBundle/Model/Tiger
class Tiger implements WildAnimalInterface
{
/**
* @var integer
* @Expose
*/
protected $id;
/**
* @var string
* @Expose
* @Type('user_message')
*/
protected $text;
/**
* @var integer
* @Exclude
*/
protected $dangerLevel;
...
}
Handler类:
class UserMessageHandler
{
...
public function serialize(VisitorInterface $visitor,
WildAnimalInterface $wildAnimal,
$type,
$visited)
{
// Hello {{username}}, I'm a Tiger ROOARRR!
$text = $wildAnimal->getText();
// (my custom replacement logic, it works already)
// Hello Joe Schmoe, I'm a Tiger ROOARRR!
return $text; // < Overwrites all rules and returns only text!
}
}
答案 0 :(得分:2)
我不太确定你的意思,但是你不能使用@postserialize和@postdeserialize(http://jmsyst.com/libs/serializer/master/reference/annotations#postserialize)注释吗?
答案 1 :(得分:1)
我遇到了同样的问题,最后找到了解决方案,我在这里解释一下:Format input and output fields with JMSSerializer (handle single property)