'Varchar(255)' ]; public function getCMSFields() { $this->beforeUpdateCMSFields( function (FieldList $fields) { // Remove field from parent's beforeExtendingCMSFields $fields->removeByName('ChildFieldBeforeExtension', true); // Adds own pre-extension field $fields->addFieldToTab('Root.Test', new TextField('GrandchildFieldBeforeExtension')); } ); $this->afterUpdateCMSFields( function (FieldList $fields) { // Remove field from parent's afterExtendingCMSFields $fields->removeByName('ChildFieldAfterExtension', true); // Adds own post-extension field $fields->addFieldToTab( 'Root.Test', new TextField('GrandchildFieldAfterExtension', 'GrandchildFieldAfterExtension') ); } ); $fields = parent::getCMSFields(); $fields->addFieldToTab('Root.Test', new TextField('GrandchildField')); return $fields; } }