3093 Posts in 875 Topics by 654 members
|
Page:
1
|
Go to End | |
| Author | Topic: | 201 Views |
-
DataExtensions and Inherited getCMSFields

6 February 2013 at 1:40am
Got a question here that's stumped me.
My LocationDataExtension adds a some fields, namely address, longitude and latitude.
It applies to a number of DataObjects, however the additional CMS Fields don't show if I'm not using the inherited CMS Fields, via parent::getCMSFields.
Since a number of the objects it applies to are quite gigantic, I've used $fields = new FieldList(new TabSet('Root')); to simplify the form building (meaning I don't have to remove all the fields manually), but it seems fields added by DataExtensions won't be included this way.
My Questions:
Is there a way to get all fields that should be added to a DataObject via extensions and add them separately - avoiding the use of parent::getCMSFields()?
Is there perhaps a way to turn form scaffolding off on a per instance basis - allowing me to use parent::getCMSFields which would return no scaffolded fields? Or a way to remove the default scaffolded fields?
Thanks,
Sam -
Re: DataExtensions and Inherited getCMSFields

7 February 2013 at 11:44pm
The answer to this (thanks to kinglozzer on the IRC) is:
$fields = new FieldList(new TabSet('Root'));
//add your fields as normal, for example
$fields->addFieldsToTab('Root.Main', array(
new TextField('Title'),
$exterior_image = new UploadField('ExteriorImage', 'Exterior image')
));
$exterior_image ->setFolderName('external_images');//magic bit
$this->extend('updateCMSFields', $fields);
return $fields;So, this allows you to not use the inherited/scaffolded fields provided by parent::getCMSFields(), but also include fields added by any applicable DataExtensions.
Super!
| 201 Views | ||
|
Page:
1
|
Go to Top |
