A reusable approach to a form field which extends a simple Text field to have several named parts (keys). This module also supports User Defined Forms.
composer require fullscreeninteractive/silverstripe-keyvaluefield
use FullscreenInteractive\KeyValueField\KeyValueField;
$fields = new FieldList(
KeyValueField::create('Quantity', 'Enter quantity of each size')
->setKeys([
'Small',
'Medium',
'Large'
])
);
When using ORM managed forms and models (i.e saveInto
) data will be saved as
a serialized array of the values to each of the keys. You can change this
behaviour if needed in your Form
class.
public function doSave($data, $form)
{
$quantity = $form->dataFieldByName('Quantity');
// returns an array of key => value
$values = json_decode($quantity->dataValue(), true);
echo $values['Small']
}
BSD 3-Clause License