Jarves\Admin\ObjectCrud::prepareFieldDefinition PHP Метод

prepareFieldDefinition() публичный Метод

prepares $fields. Replace array items which are only a key (with no array definition) with the array definition of the proper field from the object fields.
public prepareFieldDefinition ( array &$fields )
$fields array
    public function prepareFieldDefinition(array &$fields)
    {
        for ($i = 0; $i < count($fields); $i++) {
            $key = array_keys($fields)[$i];
            $field = $fields[$key];
            if (is_numeric($key) && !$field instanceof Field) {
                if (!$this->objectDefinition->getField($field)) {
                    throw new \InvalidArgumentException(sprintf('Field %s not found', $field));
                }
                $newItem = clone $this->objectDefinition->getField($field);
                if ($newItem) {
                    $newItem = $newItem->toArray();
                } else {
                    continue;
                }
                if (!isset($newItem['label'])) {
                    $newItem['label'] = $field;
                }
                $fields = array_merge(array_slice($fields, 0, $i), array($field => $newItem), array_slice($fields, $i + 1));
                $i = -1;
            }
        }
        foreach ($fields as $key => &$field) {
            if ($field instanceof Field) {
                continue;
            }
            if (!is_array($field)) {
                continue;
            }
            $fieldName = $key;
            $objectDefinition = $this->objectDefinition;
            if (strpos($key, '.')) {
                list($objectName, $fieldName) = explode('.', $key);
                if (!$objectDefinition->getField($objectName)) {
                    throw new \RuntimeException("Relation `{$objectName}` (`{$key}`) in object {$objectDefinition->getKey()} not found.");
                }
                $foreignObjectName = $objectDefinition->getField($objectName)->getObject();
                $objectDefinition = $this->jarves->getConfigs()->getObject($foreignObjectName);
                if (!$objectDefinition) {
                    throw new \RuntimeException("Object {$foreignObjectName} not found, used in field {$this->objectDefinition->getKey()} {$key}");
                }
            }
            if ($oField = $objectDefinition->getField($fieldName)) {
                $field = array_merge($oField->toArray(), $field);
            }
            if (isset($field['children'])) {
                $this->prepareFieldDefinition($field['children']);
            }
        }
    }
ObjectCrud