fullscreeninteractive / silverstripe-manyfield
SilverStripe FormField for adding dynamic data to forms.
Installs: 590
Dependents: 0
Suggesters: 1
Security: 0
Stars: 7
Watchers: 3
Forks: 1
Open Issues: 2
Type:silverstripe-vendormodule
Requires
Requires (Dev)
- phpunit/phpunit: ^5.7
README
A reusable approach to a form field which allows you to create and delete rows in either custom built forms or in Userforms.
This is designed to work on the front-end with limited javascript (i.e it does
not require GridField
or entwine).
Each row can relate to a DataObject subclass or simply to be used to capture the data as an array.
Installation
composer require fullscreeninteractive/silverstripe-manyfield
Usage
use FullscreenInteractive\ManyField\ManyField; $fields = new FieldList( $many = ManyField::create('SwabList', [ TextField::create('Swab'), TextField::create('TestSite'), TextField::create('Description'), TextField::create('Material') ]) );
Data will either be saved as setSwabList($data)
, SwabList
database field or
in the SwabList
relation. If you are saving into a relation such as HasMany
or ManyMany
list then make sure you include a hidden field in your field list.
$many = ManyField::create('SwabList', [
HiddenField::create('ID', ''),
TextField::create('Swab'),
TextField::create('TestSite'),
TextField::create('Description'),
TextField::create('Material')
]);
Sorting
Include a Hidden field Sort
and make sure sorting is enabled.
$many = ManyField::create('SwabList', [
HiddenField::create('ID', ''),
HiddenField::create('Sort', ''),
TextField::create('TestSite')
])->setCanSort(true);
Required Fields
$many = ManyField::create('SwabList', [
TextField::create('TestSite')->setRequired(true)
])->setCanSort(true);
Javascript Events
If you have UI handlers that need to run when fields are added or removed
(such as Date Pickers) create a handler on your <body>
element and listen for
either:
manyFieldAdded
manyFieldRemoved
FAQ
When I use this with File fields I don't get files uploaded?
Make sure your form encoding is set to the correct MIME type.
$form->setEncType(Form::ENC_TYPE_MULTIPART);
Licence
BSD 3-Clause License