diff --git a/core/lib/Drupal/Core/Template/Attribute.php b/core/lib/Drupal/Core/Template/Attribute.php index a410610..cebe699 100644 --- a/core/lib/Drupal/Core/Template/Attribute.php +++ b/core/lib/Drupal/Core/Template/Attribute.php @@ -180,7 +180,8 @@ public function removeClass() { $classes = array_merge($classes, (array) $arg); } - // Remove the values passed in from the value array. + // Remove the values passed in from the value array. Use array_values() to + // ensure that the array index remains sequential. $classes = array_values(array_diff($this->storage['class']->value(), $classes)); $this->storage['class']->exchangeArray($classes); } diff --git a/core/tests/Drupal/Tests/Core/Template/AttributeTest.php b/core/tests/Drupal/Tests/Core/Template/AttributeTest.php index a02f67b..b04eb51 100644 --- a/core/tests/Drupal/Tests/Core/Template/AttributeTest.php +++ b/core/tests/Drupal/Tests/Core/Template/AttributeTest.php @@ -133,6 +133,7 @@ public function testRemoveClasses() { // Remove a class that does not exist. $attribute->removeClass('gg'); $this->assertNotContains(array('gg'), $attribute['class']->value()); + // Test that the array index remains sequential. $this->assertArrayEquals(array('aa'), $attribute['class']->value()); $attribute->removeClass('aa');