Source of file UpdateFormExtension.php
Size: 1,504 Bytes - Last Modified: 2021-12-23T10:38:16+00:00
/var/www/docs.ssmods.com/process/src/src/UpdateFormExtension.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 | <?php namespace SGN\HasOneEdit; use SilverStripe\AssetAdmin\Forms\UploadField; use SilverStripe\Core\Extension; use SilverStripe\Forms\Form; class UpdateFormExtension extends Extension { /** * @param \SilverStripe\Forms\Form $form */ public function updateItemEditForm(Form $form) { $this->updateEditForm($form); } /** * @param \SilverStripe\Forms\Form $form */ public function updateEditForm(Form $form) { $record = $form->getRecord(); $fieldList = $form->Fields(); foreach ($fieldList->dataFields() as $name => $field) { $name = HasOneEdit::normaliseSeparator($name); if (!HasOneEdit::isHasOneEditField($name)) continue; $field->setName($name); if ($field instanceof UploadField) { $field = HasOneUploadField::create($field); $fieldList->replaceField($name, $field); } // Skip populating value if record doesn't exist yet, or field already has value if (!$record || $field->Value()) continue; list($relationName, $fieldOnRelation) = HasOneEdit::getRelationNameAndField($name); $relatedObject = HasOneEdit::getRelationRecord($record, $relationName); if ($relatedObject === null) continue; if ($relatedObject->hasField($fieldOnRelation)) { $field->setValue($relatedObject->getField($fieldOnRelation)); } } } } |