0

いくつかのパターン(ユーザー メッセージなど)を置き換える、単純で愚かな解決策を探しています。

残念ながら、カスタム De-/Serialization Handlerを使用すると、すべてのポリシーが破棄されます。シリアル化されたすべてのデータを手動で返す必要があります。

モデルクラス:

//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;

    ...
}

ハンドラー クラス:

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!
    }
 }
4

2 に答える 2

2

正確な意味はよくわかりませんが、 @postserialize および @postdeserialize ( http://jmsyst.com/libs/serializer/master/reference/annotations#postserialize ) 注釈を使用できませんか?

于 2013-12-18T08:46:01.740 に答える
1

私は同じ問題を抱えていて、最終的に解決策を見つけました。ここで説明します:JMSSerializerで入力フィールドと出力フィールドをフォーマットします(単一のプロパティを処理します)

于 2013-12-20T11:09:34.063 に答える