diff --git a/code/multitab-validation/MultiTabPage.php b/code/multitab-validation/MultiTabPage.php new file mode 100644 index 0000000..4037993 --- /dev/null +++ b/code/multitab-validation/MultiTabPage.php @@ -0,0 +1,63 @@ + 'Varchar(50)', + 'ThirdTabFirstField' => 'Varchar(50)', + 'ThirdTabSecondField' => 'Varchar(50)', + 'FourthTabFirstField' => 'Varchar(50)', + 'SettingsTabFirstField' => 'Varchar(50)', + ]; + + public function getCMSFields() + { + $fields = parent::getCMSFields(); + $fields->addFieldToTab("Root.Second", TextField::create("SecondTabFirstField")); + $fields->addFieldToTab("Root.Third", TextField::create("ThirdTabFirstField")); + $fields->addFieldToTab("Root.Third", TextField::create("ThirdTabSecondField")); + $fields->addFieldToTab("Root.Fourth", TextField::create("FourthTabFirstField")); + return $fields; + } + + public function getSettingsFields() + { + $fields = parent::getSettingsFields(); + $fields->addFieldToTab("Root.Settings", TextField::create('SettingsTabFirstField')); + return $fields; + } + + public function getCMSValidator() + { + return new RequiredFields([ + 'ThirdTabFirstField', + 'FourthTabFirstField', + // This is only validated if you are actually on the settings tab when clicking save + 'SettingsTabFirstField' + ]); + } + + public function validate() + { + $result = parent::validate(); + + // Validation error on specific form field that is not in RequiredFields + if ($this->SecondTabFirstField && $this->SecondTabFirstField !== '222') { + $result->addFieldError('SecondTabFirstField', 'Value of field must be 222'); + } + + // Manual testing only, uncomment this line to test + // $result->addError('This page cannot exist.'); + + return $result; + } +} diff --git a/code/multitab-validation/SingleTabPage.php b/code/multitab-validation/SingleTabPage.php new file mode 100644 index 0000000..574f30f --- /dev/null +++ b/code/multitab-validation/SingleTabPage.php @@ -0,0 +1,19 @@ +