Один из моих классов, который я сериализую, имеет виртуальное свойство, которое я хотел бы увидеть. Я использую конфигурацию yaml.
Вот ямл:
Namespace\Model\Keg:
exclusion_policy: ALL
properties:
A list of properties that work
virtual_properties:
getKegImage:
serialized_name: image
Вот класс:
namespace Namespace\Model;
class Keg extends ModelAbstract
{
/** Some properties + accessors **/
/**
* @param bool $asImgTag Whether or not to return the URL in an <img> tag
* @return array
*/
public function getKegImage ($asImgTag = false)
{
return [
'Key' => 'value',
'Key' => 'value',
'Key' => 'value'
];
}
}
Когда я сериализую модель, я ожидаю увидеть поле изображения в json с массивом в качестве его значения. Вместо этого поле отсутствует. Я перепробовал множество комбинаций настроек в файле yaml и не могу его показать.
Из этого кода видно, что виртуальные свойства не поддерживаются с использованием метаданных yaml. К счастью, вы можете смешивать источники метаданных, если хотите. Я просто добавил аннотацию @VirtualProperty Doctrine к методу, и она работала, как и ожидалось.
Виртуальные свойства поддерживаются в YAML на данный момент.
Для коллег Google, если вы используете groups
убедитесь, что вы перечислили их в определении виртуального свойства, а также хотя официальная ссылка на YAML не перечисляет их в качестве возможных значений.