Symfony2 JMSSerializer替换内联文本

时间:2013-12-18 00:58:50

标签: php symfony serialization jmsserializerbundle

我正在寻找一个简单,愚蠢的解决方案,在中将序列化字段的输出更改为替换多个模式(用于用户消息等)。

不幸的是,使用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!
    }
 }

2 个答案:

答案 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)