diff -u b/tests/src/Kernel/FieldTest.php b/tests/src/Kernel/FieldTest.php --- b/tests/src/Kernel/FieldTest.php +++ b/tests/src/Kernel/FieldTest.php @@ -144,6 +144,7 @@ // Verify that no third token was generated for the list_string field. $this->assertNoTokens('node', ['node' => $entity], [ 'test_list:2', + 'test_list:2:value', ]); // Test the test_list token metadata. diff -u b/token.tokens.inc b/token.tokens.inc --- b/token.tokens.inc +++ b/token.tokens.inc @@ -1394,7 +1394,7 @@ // tokens. else if ($field_tokens = \Drupal::token()->findWithPrefix($tokens, $field_name)) { $property_token_data = [ - 'token_type' => 'field_property', + 'field_property' => TRUE, $data['entity_type'] . '-' . $field_name => $data['entity']->$field_name, 'field_name' => $data['entity_type'] . '-' . $field_name, ]; @@ -1405,7 +1405,7 @@ // Remove the cloned object from memory. unset($entity); } - elseif (!empty($data['token_type']) && $data['token_type'] == 'field_property') { + elseif (!empty($data['field_property'])) { foreach ($tokens as $name => $original) { // Handle [entity:field_name:0:value] tokens. if (strpos($name, ':') !== FALSE) { @@ -1416,19 +1416,8 @@ else { $delta = 0; } - if ($field_delta = $data[$data['field_name']][$delta]) { - $field_delta_value = $field_delta->getValue(); - if (isset($field_delta_value[$name])) { - $replacements[$original] = $field_delta_value[$name]; - } - // This is not a field property token. - else { - continue; - } - } - // If no such delta exists, let's not replace the token. - else { - continue; + if (isset($data[$data['field_name']][$delta]) && isset($data[$data['field_name']][$delta]->$name)) { + $replacements[$original] = $data[$data['field_name']][$delta]->$name; } } }