diff --git a/src/Forms/DropdownField.php b/src/Forms/DropdownField.php index 765b8a9df31..2793bb34fe2 100644 --- a/src/Forms/DropdownField.php +++ b/src/Forms/DropdownField.php @@ -2,8 +2,10 @@ namespace SilverStripe\Forms; +use SilverStripe\Core\Convert; use SilverStripe\ORM\ArrayList; use SilverStripe\View\ArrayData; +use SilverStripe\ORM\FieldType\DBHTMLText; /** * Dropdown field, created from a select tag. @@ -124,6 +126,39 @@ public function getHasEmptyDefault() return parent::getHasEmptyDefault() || $this->Required(); } + /** + * Provides '; + $options[] = $item; + } + + return implode("\n", $options); + } + /** * @param array $properties * @return string @@ -141,6 +176,11 @@ public function Field($properties = []) 'Options' => new ArrayList($options) ]); + // Without this, changing the source will render the previous list due to cache + $OptionsHTML = new DBHTMLText('Options'); + $OptionsHTML->setValue($this->renderOptionsHTML()); + $properties['OptionsHTML'] = $OptionsHTML; + return parent::Field($properties); } } diff --git a/templates/SilverStripe/Forms/DropdownField.ss b/templates/SilverStripe/Forms/DropdownField.ss index da566e5b5b8..29d8f8ef54c 100644 --- a/templates/SilverStripe/Forms/DropdownField.ss +++ b/templates/SilverStripe/Forms/DropdownField.ss @@ -1,9 +1,3 @@