NEW default value for Country Dropdown

This commit is contained in:
Chen Shenghan 2018-04-29 21:33:05 +12:00
parent bddf5108e5
commit 4d89705fe6
2 changed files with 30 additions and 2 deletions

View File

@ -22,13 +22,17 @@ class EditableCountryDropdownField extends EditableFormField
private static $table_name = 'EditableCountryDropdownField';
/**
* @return FieldList
* @return \SilverStripe\Forms\FieldList
*/
public function getCMSFields()
{
$fields = parent::getCMSFields();
$fields->removeByName('Default');
$fields->replaceField(
'Default',
DropdownField::create('Default', _t(__CLASS__ . '.DEFAULT', 'Default value'))
->setSource(i18n::getData()->getCountries())
);
return $fields;
}
@ -40,6 +44,11 @@ class EditableCountryDropdownField extends EditableFormField
->setFieldHolderTemplate(EditableFormField::class . '_holder')
->setTemplate(EditableDropdown::class);
// Set default
if ($this->Default) {
$field->setValue($this->Default);
}
$this->doUpdateFormField($field);
return $field;

View File

@ -3,6 +3,7 @@
namespace SilverStripe\UserForms\Tests\Model\EditableFormField;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\Forms\DropdownField;
use SilverStripe\UserForms\Model\EditableFormField\EditableCountryDropdownField;
class EditableCountryDropdownFieldTest extends SapphireTest
@ -21,4 +22,22 @@ class EditableCountryDropdownFieldTest extends SapphireTest
$field->Name = 'EditableFormField_123456';
$this->assertEmpty($field->getFormField()->Title());
}
public function testCMSFieldsContainsDefaultValue()
{
/** @var EditableCountryDropdownField $field */
$field = EditableCountryDropdownField::create();
$cmsFields = $field->getCMSFields();
$defaultField = $cmsFields->dataFieldByName('Default');
$this->assertNotNull($defaultField);
$this->assertInstanceOf(DropdownField::class, $defaultField);
}
public function testDefaultValue()
{
/** @var EditableCountryDropdownField $field */
$field = EditableCountryDropdownField::create();
$field->Default = 'nz';
$this->assertEquals($field->getFormField()->Value(), 'nz');
}
}