diff --git a/modules/backend/classes/FormTabs.php b/modules/backend/classes/FormTabs.php index 0dab4e06a..4ad092e8a 100644 --- a/modules/backend/classes/FormTabs.php +++ b/modules/backend/classes/FormTabs.php @@ -84,6 +84,26 @@ class FormTabs implements IteratorAggregate, ArrayAccess } } + /** + * Remove a field from all tabs by name. + * @param string $name + * @return True on success, False on failure + */ + public function removeField($name) + { + foreach ($this->fields as $tab => $fields) { + foreach ($fields as $fieldName => $field) { + if ($fieldName == $name) { + unset($this->fields[$tab][$fieldName]); + + return true; + } + } + } + + return false; + } + /** * Add a field to the collection of tabs. * @param string $name diff --git a/modules/backend/widgets/Form.php b/modules/backend/widgets/Form.php index e289aecc6..d4da58928 100644 --- a/modules/backend/widgets/Form.php +++ b/modules/backend/widgets/Form.php @@ -459,6 +459,27 @@ class Form extends WidgetBase } } + /** + * Programatically remove a field. + * @return True on success, False on failure + */ + public function removeField($name) + { + if (!isset($this->fields[$name])) { + return false; + } + + // Remove from tabs + $this->primaryTabs->removeField($name); + $this->secondaryTabs->removeField($name); + $this->outsideTabs->removeField($name); + + // Remove from form + unset($this->fields[$name]); + + return true; + } + /** * Programatically add fields, used internally and for extensibility. */