symfony - Symfony2 ObjectNormalizer denormalize callbacks -


is possible use setcallbacks on symfony\component\serializer\normalizer\objectnormalizer invoked when calling symfony\component\serializer\serializer.deserialize() convert normalized value object?

i know reverse possible in object can normalized when calling symfony\component\serializer\serializer.serialize(). don't how reverse normalization.

example of serialization on entity setcallbacks converting foo id:

    $encoder = new jsonencoder();     $normalizer = new objectnormalizer();     $normalizer->setcallbacks(array(         'foo' => function ($foo) {             return $foo instanceof foo                 ? $foo->getid()                 : null;         },     ));     $serializer = new serializer(array($normalizer), array($encoder));      $json = $serializer->serialize($entity, 'json'); 

the reverse do:

$em = static::getentitymanager();      $encoder = new jsonencoder();     $normalizer = new objectnormalizer();     $normalizer->setcallbacks(array(         'foo' => function ($foo) use($em) {             return !is_null($foo)                 ? $em->getreference('\entity\foo', $foo)                 : null;         },     ));     $serializer = new serializer(array($normalizer), array($encoder));      return $serializer->deserialize($entity, $classname, 'json'); 

the error get:

catchable fatal error: argument 1 passed \entity\bar::setfoo() must instance of \entity\foo, integer given 

or there pre step can carried out before deserialize?

please check here see exact getreference.

there no way make getreference() check database existence of referenced object.

if want work deserealize must use $em->getrepository('\entity\foo')->find($foo)


Comments