[英]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.