无法序列化 schmittjoh/serializer 中的虚拟属性

Can't serialize virtual properties in schmittjoh/serializer

我正在序列化的 class 之一有一个虚拟的 属性,我想看看。我正在使用 yaml 配置。

这是 yaml:

Namespace\Model\Keg:
   exclusion_policy: ALL
   properties:
      A list of properties that work
   virtual_properties:
      getKegImage:
         serialized_name: image

这是class:

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 参考没有列出它们作为可能的值.