Pimcore\Model\Object\ClassDefinition\Data\Fieldcollections::getDataForEditmode PHP Method

getDataForEditmode() public method

See also: Object\ClassDefinition\Data::getDataForEditmode
public getDataForEditmode ( string $data, null | AbstractObject $object = null, mixed $params = [] ) : string
$data string
$object null | Pimcore\Model\Object\AbstractObject
$params mixed
return string
    public function getDataForEditmode($data, $object = null, $params = [])
    {
        $editmodeData = [];
        $idx = -1;
        if ($data instanceof Object\Fieldcollection) {
            foreach ($data as $item) {
                $idx++;
                if (!$item instanceof Object\Fieldcollection\Data\AbstractData) {
                    continue;
                }
                try {
                    $collectionDef = Object\Fieldcollection\Definition::getByKey($item->getType());
                } catch (\Exception $e) {
                    continue;
                }
                $collectionData = [];
                foreach ($collectionDef->getFieldDefinitions() as $fd) {
                    if (!$fd instanceof CalculatedValue) {
                        $collectionData[$fd->getName()] = $fd->getDataForEditmode($item->{$fd->getName()}, $object, $params);
                    }
                }
                $calculatedChilds = [];
                self::collectCalculatedValueItems($collectionDef->getFieldDefinitions(), $calculatedChilds);
                if ($calculatedChilds) {
                    foreach ($calculatedChilds as $fd) {
                        $data = new Object\Data\CalculatedValue($fd->getName());
                        $data->setContextualData("fieldcollection", $this->getName(), $idx, null, null, null, $fd);
                        $data = $fd->getDataForEditmode($data, $object, $params);
                        $collectionData[$fd->getName()] = $data;
                    }
                }
                $editmodeData[] = ["data" => $collectionData, "type" => $item->getType(), "oIndex" => $idx];
            }
        }
        return $editmodeData;
    }