diff --git a/application/forms/Security/RoleForm.php b/application/forms/Security/RoleForm.php index 0fb53e858..4edb33d07 100644 --- a/application/forms/Security/RoleForm.php +++ b/application/forms/Security/RoleForm.php @@ -93,7 +93,7 @@ class RoleForm extends ConfigForm foreach ($this->providedRestrictions as $name => $description) { $this->addElement( 'text', - $name, + str_replace('/', '_', $name), array( 'label' => $name, 'description' => $description @@ -129,6 +129,12 @@ class RoleForm extends ConfigForm ? String::trimSplit($role['permissions']) : null; $role['name'] = $name; + foreach (array_keys($role) as $key) { + // Slashes are not allowed in a form's element name + $value = $role[$key]; + unset($role[$key]); + $role[str_replace('/', '_', $key)] = $value; + } $this->populate($role); return $this; } @@ -230,6 +236,12 @@ class RoleForm extends ConfigForm if (isset($values['permissions'])) { $values['permissions'] = implode(', ', $values['permissions']); } + foreach (array_keys($values) as $key) { + // Slashes are not allowed in a form's element name + $value = $values[$key]; + unset($values[$key]); + $values[str_replace('/', '_', $key)] = $value; + } return $values; } }