From 5bbeb777775179223187b08b530c6c5b2aff4ec9 Mon Sep 17 00:00:00 2001 From: Steve Boyd Date: Thu, 13 Jun 2024 12:18:39 +1200 Subject: [PATCH] FIX Remove any extra added tabs from SingleTabPage --- code/multitab-validation/SingleTabPage.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/code/multitab-validation/SingleTabPage.php b/code/multitab-validation/SingleTabPage.php index 4c7d8f7..8629e91 100644 --- a/code/multitab-validation/SingleTabPage.php +++ b/code/multitab-validation/SingleTabPage.php @@ -4,6 +4,7 @@ namespace SilverStripe\FrameworkTest\Model; use Page; use SilverStripe\Forms\RequiredFields; +use SilverStripe\Forms\Tab; if (!class_exists(Page::class)) { return; @@ -22,4 +23,22 @@ class SingleTabPage extends Page 'Content' ]); } + + public function getCMSFields() + { + $fields = parent::getCMSFields(); + // Page may will extend CWP BasePage if running in a kitchen-sink context, + // so removing any extra tabs added - this class is for a "single tab" test + $tabFieldNames = []; + foreach ($fields->flattenFields() as $field) { + $fieldName = $field->getName(); + if (is_a($field, Tab::class) && $fieldName !== 'Main') { + $tabFieldNames[] = $fieldName; + } + } + foreach ($tabFieldNames as $tabFieldName) { + $fields->removeByName($tabFieldName); + } + return $fields; + } }