2015-02-16 4 views
2

Один из моих классов, который я сериализую, имеет виртуальную собственность, которую я хотел бы видеть. Я использую конфигурацию yaml.Невозможно сериализовать виртуальные свойства в schmittjoh/serializer

Вот 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, и я не могу его показать.

+0

Хммм кажется правильным на основе [test fixture] (https://github.com/schmittjoh/serializer/blob/master/tests/JMS/Serializer/Tests/Metadata/Driver/yml/ObjectWithVirtualProperties.yml) Вы были случайно попробуйте запустить тесты, чтобы узнать, проходит ли он? – prodigitalson

+0

Я расскажу, что случилось – danwkennedy

+0

Испытания, относящиеся к этому приспособлению, похоже, прошли - произошли сбои и ошибки, только не в той области, насколько я мог сказать, однако я не мог найти способ убедиться, что метаданные, считываемые сериализатором, поступают из аннотаций yml, xml или doctrine. – danwkennedy

ответ

0

От взгляда на код, похоже, что виртуальные свойства не поддерживаются с использованием метаданных yaml. К счастью, вы можете смешивать источники метаданных, если хотите. Я просто добавил аннотацию Doctrine @VirtualProperty к методу, и он работал, как ожидалось.