/** * @return \Jarves\Admin\FieldTypes\TypeInterface * @throws \Jarves\Exceptions\ObjectNotFoundException * @throws \Jarves\Exceptions\ObjectFieldNotFoundException * @throws \Jarves\Admin\FieldTypes\TypeNotFoundException */ public function getFieldType() { if (null === $this->fieldType) { $type = $this->getType(); $field = null; // if ('predefined' === strtolower($type)) { // $object = $this->getJarves()->getObjects()->getDefinition($this->getObject()); // if (!$object && $this->getObjectDefinition()) { // $object = $this->getObjectDefinition(); // } // if (null === $object) { // throw new ObjectNotFoundException( // sprintf( // 'Object `%s` for predefined field `%s` not found.', // $this->getObject(), // $this->getId() // ) // ); // } // if (!$fieldId = $this->getField()) { // $fieldId = $this->getId(); // } // // if (!$field = $object->getField($fieldId)) { // throw new ObjectFieldNotFoundException( // sprintf( // 'Field `%s` of Object `%s` for predefined field `%s` not found.', // $fieldId, // $object->getKey(), // $this->getId() // ) // ); // } // $type = $field->getType(); // } try { $this->fieldType = $this->getJarves()->getFieldTypes()->newType($type); } catch (\Exception $e) { if ($this->getObjectDefinition()) { $message = sprintf('FieldType `%s` for field `%s` in object `%s` not found.', $type, $this->getId(), $this->getObjectDefinition()->getId()); } else { $message = sprintf('FieldType `%s` for field `%s` not found.', $type, $this->getId()); } throw new TypeNotFoundException($message, 0, $e); } $this->fieldType->setFieldDefinition($field ?: $this); } return $this->fieldType; }