Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Customising the CMS /

Moderators: martimiz, Sean, Ed, biapar, Willr, Ingo, swaiba

How to run a function after certain CMS fields have been changed

Go to End

4 Posts   1767 Views


Community Member, 138 Posts

3 October 2011 at 3:22pm

Edited: 03/10/2011 3:24pm

I've got a function I want to run on page save/ publish if certain custom CMS fields have been changed.

For example:

class Foo extends DataObjectDecorator {
 public function updateCMSFields() {
  $fields->addFieldsToTab("Root.Content", array(
   new NumericField('Bar', 'Change me and save this page to trigger FooBar function')

function FooBar(){
 //Do things
 //With stuff

Any ideas?


Forum Moderator, 1899 Posts

3 October 2011 at 9:47pm

create some custom javascript to handle the change (inspect the current form to get the required ID to watch), add a REquirements::javascript within the function - job done.


Community Member, 138 Posts

4 October 2011 at 8:40am

Hi Swaiba

Thank you for that.

I understand the principle of what you're saying but struggling with the correct execution.

Do you have any code examples of how to do this?



Forum Moderator, 1377 Posts

6 October 2011 at 8:07am

Edited: 06/10/2011 8:07am

Looking at the SiteTree::onBeforeWrite() function I noticed the use of $this->isChanged('URLSegment') (line 1339). So maybe this would work in your Page class:

protected function onBeforeWrite() {

	if ($this->isChanged('SomeField')){
		// do something


Mind - I didn't test it...