protected function enrichElegantModel(ElegantModelInterface $elegantModel) { $rememberTokenField = $elegantModel->getModelInstance()->getRememberTokenName(); if ($elegantModel->hasField($rememberTokenField)) { $elegantModel->addField(new HiddenMetaField([], $elegantModel->getField($rememberTokenField))); } }
/** * @param ElegantModelInterface $elegantModel * @param $field */ protected function replaceMetaFields(ElegantModelInterface $elegantModel, $field) { foreach ($this->attachmentSuffixes as $suffix) { $metaFieldName = $field . $suffix; $elegantModel->addField(new HiddenMetaField([], $elegantModel->getField($metaFieldName))); } }
protected function enrichElegantModel(ElegantModelInterface $elegantModel) { $class = new ReflectionClass($elegantModel->getClassName()); $property = $class->getProperty('translatedAttributes'); $translatedAttributes = $property->getValue($class->newInstance()) ?: []; if (!($translatedModel = $this->getTranslatedModel($class))) { return; } // Hide translatedModel $translatedModel->setHidden(true); // Decorate translated attribute field foreach ($translatedAttributes as $attribute) { if ($translatedModel->hasField($attribute)) { $elegantModel->addField(new TranslatableField([], $translatedModel->getField($attribute)), true); } } }
public function elegantLists() { $keyName = $this->elegantModel->getKeyName(); $fields = array_merge(array_keys($this->elegantModel->getDatabaseFields()), [$keyName]); $result = []; $list = $this->model->get($fields)->keyBy($keyName); foreach ($list as $k => $v) { $result[$k] = $this->elegantModel->getModelAsString($v); } return $result; }
public function isAvailableInModel(ElegantModelInterface $elegantModel) { $class = new ReflectionClass($elegantModel->getClassName()); $extensionAvailable = false; // Check current class has reflected trait if ($this->hasReflectedTrait($class)) { $extensionAvailable = true; } else { // Check parent classes, since ReflectionClass::getTraits doesn't // check inherited traits (https://bugs.php.net/bug.php?id=61554) while ($parent = $class->getParentClass()) { if ($this->hasReflectedTrait($parent)) { $extensionAvailable = true; break; } $class = $parent; } } if ($extensionAvailable) { $this->enrichElegantModel($elegantModel); } return $extensionAvailable; }