繁体   English   中英

JMS序列化器忽略非持久属性

[英]JMS Serializer ignoring non-persisted property

我一直在为我的Symfony2 / Doctrine对象之一上的一个属性而苦苦挣扎,而该属性没有保留在数据库中。 它是一个对象数组,其中包含标签,键和值之类的属性,但是即使将其定义为简单的数组数组,也不会显示。

这是在通常持久化的对象中定义数组的方式:

/*
* @Accessor(getter="getReceipt",setter="setReceipt")
* @Type("ArrayCollection<MyProject\ReceiptProperty>")
* @Expose
* @Groups({"details"})
*/
protected $receipt;

public function setReceipt($receipt) {
    $this->receipt = $receipt;
}

public function getReceipt() {
    return $this->receipt;
}

这是数组中对象的定义方式

/**
* @ExclusionPolicy("all")
*/
class ReceiptProperty extends APIObject {
    /**
    * @Type("string")
    * @Expose
    * @Groups({"basic"})
    */
    public $label;

    /**
    * @Type("string")
    * @Expose
    * @Groups({"basic"})
    */
    public $type;

    /**
    * @Type("string")
    * @Expose
    * @Groups({"basic"})
    */
    public $key;

    /**
    * @Expose
    * @Groups({"basic"})
    */
    public $value;

    public function __construct($data) {
        $this->label = $data['label'];
        $this->type = $data['type'];
        $this->key = $data['key'];
        $this->value = $data['value'];
    }
}

通过在使用print_r进行序列化之前直接打印对象,我可以看到数据已经存在,但是无论配置如何,该字段都不会显示。

为了帮助那些可能遇到类似问题的人,我的问题本质上是不正确的注释。

在第一个代码块中,您会注意到注释注释以/ *开头

事实证明,JMS序列化程序不会处理不是以/ **开头的注释,因此它实际上忽略了我的命令。 更新注释注释后,它按预期工作。 总是小事...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM