Pimcore\Model\Object\ClassDefinition\Data\MultihrefMetadata::getDataFromEditmode PHP Method

getDataFromEditmode() public method

See also: Model\Object\ClassDefinition\Data::getDataFromEditmode
public getDataFromEditmode ( array $data, null | AbstractObject $object = null, mixed $params = [] ) : array
$data array
$object null | Pimcore\Model\Object\AbstractObject
$params mixed
return array
    public function getDataFromEditmode($data, $object = null, $params = [])
    {
        //if not set, return null
        if ($data === null or $data === false) {
            return null;
        }
        $multihrefMetadata = [];
        if (is_array($data) && count($data) > 0) {
            foreach ($data as $element) {
                if ($element["type"] == "object") {
                    $e = Object::getById($element["id"]);
                } elseif ($element["type"] == "asset") {
                    $e = Asset::getById($element["id"]);
                } elseif ($element["type"] == "document") {
                    $e = Document::getById($element["id"]);
                }
                if ($e instanceof Element\ElementInterface) {
                    $metaData = \Pimcore::getDiContainer()->make('Pimcore\\Model\\Object\\Data\\ElementMetadata', ["fieldname" => $this->getName(), "columns" => $this->getColumnKeys(), "element" => $e]);
                    foreach ($this->getColumns() as $columnConfig) {
                        $key = $columnConfig["key"];
                        $setter = "set" . ucfirst($key);
                        $value = $element[$key];
                        $metaData->{$setter}($value);
                    }
                    $multihrefMetadata[] = $metaData;
                    $elements[] = $e;
                }
            }
        }
        //must return array if data shall be set
        return $multihrefMetadata;
    }