diff --git a/core/lib/Drupal/Core/Template/AttributeArray.php b/core/lib/Drupal/Core/Template/AttributeArray.php index c432ba0..dbe8089 100644 --- a/core/lib/Drupal/Core/Template/AttributeArray.php +++ b/core/lib/Drupal/Core/Template/AttributeArray.php @@ -66,6 +66,8 @@ public function offsetExists($offset) { * Implements the magic __toString() method. */ public function __toString() { + // Filter out any empty values before printing. + $this->value = array_filter($this->value); return String::checkPlain(implode(' ', $this->value)); } diff --git a/core/tests/Drupal/Tests/Core/Template/AttributeTest.php b/core/tests/Drupal/Tests/Core/Template/AttributeTest.php index bcd04a2..113fd79 100644 --- a/core/tests/Drupal/Tests/Core/Template/AttributeTest.php +++ b/core/tests/Drupal/Tests/Core/Template/AttributeTest.php @@ -148,20 +148,21 @@ public function testTwigAddRemoveClasses($template, $expected, $seed_attributes * a resulting string of classes and an optional array of attributes. */ public function providerTestAttributeClassHelpers() { + // The empty array elements check that blank class names are filtered out when printed. return array( array("{{ attributes.class }}", ''), array("{{ attributes.addClass('everest').class }}", 'everest'), - array("{{ attributes.addClass(['k2', 'kangchenjunga']).class }}", 'k2 kangchenjunga'), - array("{{ attributes.addClass('lhotse', 'makalu', 'cho-oyu').class }}", 'lhotse makalu cho-oyu'), + array("{{ attributes.addClass(['k2', 'kangchenjunga', '']).class }}", 'k2 kangchenjunga'), + array("{{ attributes.addClass('lhotse', 'makalu', 'cho-oyu', '').class }}", 'lhotse makalu cho-oyu'), array( "{{ attributes.addClass('nanga-parbat').class }}", 'dhaulagiri manaslu nanga-parbat', - array('class' => array('dhaulagiri', 'manaslu')), + array('class' => array('dhaulagiri', 'manaslu', '')), ), array( "{{ attributes.removeClass('annapurna').class }}", 'gasherbrum-i', - array('class' => array('annapurna', 'gasherbrum-i')), + array('class' => array('annapurna', 'gasherbrum-i', '')), ), array( "{{ attributes.removeClass(['broad peak']).class }}",