@JMS\Exclude, только если свойство пусто

Я использую JMS\Serializer в своем проекте и хочу игнорировать одно свойство, только если массив в нем пуст.

Я пробовал что-то вроде:

@JMS\Exclude(if="count('$this->required') === 0")
or 
@JMS\Exclude(if="empty('required')")

но получил синтаксическую ошибку.

Может ли кто-нибудь помочь мне в этом?

благодарить.


person Mathieu Delisle    schedule 01.05.2017    source источник
comment
насколько я могу прочитать документы, которые вы можете использовать @JMS\Exclude(if="<1"), не могли бы вы попробовать?   -  person john Smith    schedule 02.05.2017
comment
если нет, попробуйте стратегию исключения stackoverflow.com/questions/21916450/   -  person john Smith    schedule 02.05.2017
comment
То, что вам нужно, было реализовано недавно, и оно находится в версии 1.7, так что вы можете подождать это. Он называется @SkipWhenEmpty. Это ошибка связана с этим. @SkipWhenEmpty Эту аннотацию можно определить для свойства, чтобы указать, что свойство не следует сериализовать, если результат будет «пустым».   -  person BentCoder    schedule 02.05.2017
comment
о, спасибо @BentCoder. это именно то, что мне нужно. я надеюсь, что это будет объединено в ближайшее время.   -  person Mathieu Delisle    schedule 02.05.2017
comment
@MathieuDelisle Я добавил это как ответ ниже, так что, если вы любезно примете его, у всех остальных будет представление о возможном решении.   -  person BentCoder    schedule 02.05.2017


Ответы (2)


То, что вам нужно, было реализовано недавно и находится в версии 1.7, так что вы можете подождать этого. . Он называется @SkipWhenEmpty.

@SkipWhenEmpty Эту аннотацию можно определить для свойства, чтобы указать, что свойство не следует сериализовать, если результат будет «пустым».

Это связано с ошибкой.

person BentCoder    schedule 02.05.2017

Вам нужен этот:

@JMS\Exclude(if="!object.required")
person Zombie    schedule 10.07.2019