我一直在为我的一个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进行序列化之前直接打印对象,我可以看到数据存在,但无论配置是什么,该字段都不会显示。
答案 0 :(得分:2)
为了帮助那些可能会遇到类似问题的人,我的问题本质上是一个不正确的注释。
在第一个代码块中,您会注意到注释注释以/ *
开头事实证明,JMS Serializer不会处理不以/ **开头的注释,所以它有效地忽略了我的命令。更新注释注释后,它按预期工作。这总是小事......