<?php namespace SilverStripe\ORM\Tests\DataExtensionTest; use SilverStripe\Dev\TestOnly; use SilverStripe\Forms\FieldList; use SilverStripe\Forms\TextField; use SilverStripe\ORM\Tests\DataExtensionTest\CMSFieldsChild; /** * Third level test class, testing that beforeExtendingCMSFields and afterExtendingCMSFields can be nested */ class CMSFieldsGrandChild extends CMSFieldsChild implements TestOnly { private static $table_name = 'DataExtensionTest_CMSFieldsGrandChild'; private static $db = [ 'GrandchildField' => '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; } }