Um @Exclude
Annotation zu verwenden, müssen Sie ein wenig von Symfonys ExpressionLanguage Verständnis haben.
Offensichtlich gehört die in der Annotation verwendete Funktion (z. B. someAction()
) nicht zum aktuellen Objekt, sondern zur Expression-Sprachinstanz. Um sich zu registrieren es, gehen Sie wie folgt vor:
$language = new ExpressionLanguage();
$language->register('someAction', function(){}, function ($arguments, $object) {
// your logic goes here
return false;
});
Dann binden Sie es zu Ihrem Serializer:
$serializer = SerializerBuilder::create()
->setExpressionEvaluator(new ExpressionEvaluator($language))
->build();
Dann sollten Sie in der Lage sein, mit diesen Ausschluss Strategie zur Serialisierung:
/**
* @var string
*
* @ORM\Column(name="full_name", type="text", nullable=true)
* @JMS\Exlude(if="!someAction(object)")
*/
private $fullName;
Derjenige Sache, die ich unsicher bin, ist leer leer Callable zu register
Aufruf (für Compiler) und ich habe keine Mittel, um es eine Drehung geben und bestätigen, dass gültig ist.
Hoffe, das hilft ...