我想在序列化数组中保存一些数据。以下
->add('consumptionData', 'sonata_type_native_collection', array(
'label' => 'Verbrauchsdaten',
'entry_type' => ConsumptionDataType::class,
'allow_add' => true,
'allow_delete' => true,
'entry_options' => array(
'label' => false
)
))
使用symfony可以正常工作但是有了sonata管理员我得到了
通过“AppBundle \ Entity \ Document#meterPoints”关系找到了一个新实体,该关系未配置为实体级联持久化操作......
如何判断sonata应该是序列化数组而不是实体?
答案 0 :(得分:0)
如果您想将数据保存为数组,则可以"施放"它需要为实体中的字段输入getter。
如果它破坏了代码的逻辑,你可以为新的getter / setter方法添加一些#34; fake"实体。表单字段名称在为其指定getter和setter时是合法的,即使您的实体中不存在具有此名称的字段。
因此,您可以在构建器中编写类似的内容:
->add('consumptionDataForArray', 'sonata_type_native_collection', [...]))
在你的实体中有类似的东西:
public function setConsumptionDataForArray($data)
{
// change your data here as you need
$this->consumptionData = $neededData;
}
public function getConsumptionDataForArray()
{
// cast your data back to array
return $castedBackData;
}
希望这是你问题的答案。