2017-11-10 18 views
0

私はSymfony 2.8をJMSシリアライザと併用しています。デシリアライザメソッドを使用すると、エンティティクラスのコンストラクタが呼び出されません。私のコードを参照してください。Jmsシリアライザはコンストラクタを呼び出さない

私service.yml

jms_serializer.unserialize_object_constructor: 
    class: AppBundle\Serializer\ObjectConstructor 

私ObjectConstructor

<?php 

namespace AppBundle\Serializer; 

use JMS\Serializer\VisitorInterface; 
use JMS\Serializer\Metadata\ClassMetadata; 
use JMS\Serializer\DeserializationContext; 
use JMS\Serializer\Construction\ObjectConstructorInterface; 

class ObjectConstructor implements ObjectConstructorInterface 
{ 

    /** 
    * {@inheritdoc} 
    */ 
    public function construct(VisitorInterface $visitor, ClassMetadata $metadata, $data, array $type, DeserializationContext $context) { 

     $className = $metadata->name; 

     return new $className(); 
    } 
} 

と私のクラスのコンストラクタ:

public function __construct() { 

    $this->dateTime = new \DateTime(); 
} 

任意のアイデア?

答えて

0

あなたは今私が追加した場合ObjectConstructorにおける構造メソッドが呼び出されますが、クラスのメソッドの構文ObjectConstructorない

jms_serializer.object_constructor: 
    alias: your_service_id 
+0

のようなカスタムのコンストラクタサービスのエイリアスを作成する必要があります。 –

関連する問題