সঠিক উপায় হ'ল অপশন_গ্রেড_ভ্যালু () ফাংশন ব্যবহার করা । কারণ ক্ষেত্রটিতে "অনুমোদিত_মূল্যগুলি" সেটিংস নাও থাকতে পারে এবং বিকল্পগুলি "অনুমোদিত_মূল্য_কাজ" দ্বারা সরবরাহ করা যেতে পারে।
সরাসরি উদাহরণ:
কেস # 1: আপনার একটি সত্তা অবজেক্ট রয়েছে এবং বিকল্পগুলির সাথে ক্ষেত্রের মানটির একটি লেবেল পেতে চান।
$field_name = 'field_state';
/** @var \Drupal\Core\Field\FieldStorageDefinitionInterface $field_definition */
$field_definition = $entity->{$field_name}->getFieldDefinition();
// This is a list (array) of options for the field definition:
// [{option1_key} => {option1_value}, {option2_key} => {option2_value}, ...]
$field_allowed_options = options_allowed_values($field_definition, $entity);
// If the field is NOT multiple.
/** @var string|\Drupal\Component\Render\MarkupInterface $field_value_label */
$field_value_label = $field_allowed_options[$entity->{$field_name}->value];
// If the field is multiple.
$field_value = array_column($entity->{$field_name}->getValue(), 'value', 'value');
/** @var string[]|\Drupal\Component\Render\MarkupInterface[] $field_value_labels */
$field_value_labels = array_intersect_key($field_allowed_options, $field_value);
কেস # 2: আপনার কোনও সত্তা অবজেক্ট নেই তবে আপনি সত্তার ক্ষেত্রের সমস্ত অনুমোদিত বিকল্পের একটি তালিকা পেতে চান।
$entity_type_id = 'node';
$field_name = 'field_state';
$entity_fields_definitions = \Drupal::service('entity_field.manager')->getFieldStorageDefinitions($entity_type_id);
/** @var \Drupal\Core\Field\FieldStorageDefinitionInterface $field_definition */
$field_definition = $entity_fields_definitions[$field_name];
$field_allowed_options = options_allowed_values($field_definition);