Sonata Admin保存没有实体的本机集合

时间:2017-01-21 10:49:11

标签: php symfony sonata-admin symfony-sonata

我想在序列化数组中保存一些数据。以下

->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应该是序列化数组而不是实体?

1 个答案:

答案 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;
}

希望这是你问题的答案。