diff --git a/bundles/AdminBundle/Controller/Admin/DataObject/ClassController.php b/bundles/AdminBundle/Controller/Admin/DataObject/ClassController.php index ce44ed65340..58959ce1cba 100644 --- a/bundles/AdminBundle/Controller/Admin/DataObject/ClassController.php +++ b/bundles/AdminBundle/Controller/Admin/DataObject/ClassController.php @@ -455,6 +455,14 @@ public function saveAction(Request $request) $class->rename($values['name']); } + if ($values['compositeIndices']) { + foreach ($values['compositeIndices'] as $index => $compositeIndex) { + if ($compositeIndex['index_key'] !== ($sanitizedKey = preg_replace('/[^a-za-z0-9_\-+]/', '', $compositeIndex['index_key']))) { + $values['compositeIndices'][$index]['index_key'] = $sanitizedKey; + } + } + } + unset($values['creationDate']); unset($values['userOwner']); unset($values['layoutDefinitions']); diff --git a/bundles/AdminBundle/Resources/public/js/pimcore/object/classes/class.js b/bundles/AdminBundle/Resources/public/js/pimcore/object/classes/class.js index 28602a94fda..ebedbe757d2 100644 --- a/bundles/AdminBundle/Resources/public/js/pimcore/object/classes/class.js +++ b/bundles/AdminBundle/Resources/public/js/pimcore/object/classes/class.js @@ -1085,7 +1085,14 @@ pimcore.object.classes.klass = Class.create({ fieldLabel: t("key"), labelWidth: 100, width: 250, - value: data.index_key + value: data.index_key, + validator: function (value) { + if(value !== value.replace(/[^a-za-z0-9_\-+]/g,'')){ + this.setvalue(value.replace(/[^a-za-z0-9_\-+]/g,'')); + } + + return true; + } }; //fixes data to match store model