Source of file InnerComposite.php
Size: 1,634 Bytes - Last Modified: 2021-12-23T10:39:20+00:00
/var/www/docs.ssmods.com/process/src/src/Api/FormBuilder/Parts/InnerComposite.php
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | <?php namespace Sunnysideup\BuildDataObject\Api\FormBuilder\Parts; use SilverStripe\Forms\CompositeField; use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\FormField; use SilverStripe\Forms\TextField; class InnerComposite { private $keyField; private $valueField; public function __construct($nameKey, $source1, $valueKey, $source2) { //key field $this->keyField = self::createFormField($nameKey, $source1, 'mykey'); if ($valueKey) { //value field $this->valueField = self::createFormField($valueKey, $source2, 'myvalue'); } } public function getNameKey(): string { return $this->keyField->getName(); } public function toInnerFormField($position, $isMultiple): FormField { if ($this->valueField || $isMultiple) { $subCompositeField = CompositeField::create(); $subCompositeField->addExtraClass('InnerComposite pos' . $position); $subCompositeField->push($this->keyField); if ($this->valueField) { $subCompositeField->push($this->valueField); } return $subCompositeField; } return $this->keyField; } private static function createFormField($key, &$source, $additionalClass): FormField { if ($source) { asort($source); $field = DropdownField::create($key, '', $source)->setEmptyString('--- Please Select ---'); } else { $field = TextField::create($key, ''); } return $field->addExtraClass($additionalClass); } } |