মানের পরিবর্তে একটি নির্বাচিত লেবেল কীভাবে অ্যাক্সেস করবেন


12

আমার কাছে রাজ্যের একটি নির্বাচিত তালিকা রয়েছে:

AL|Alabama
AK|Alaska
AZ|Arizona
AR|Arkansas

নির্বাচিত রাষ্ট্রীয় মান অ্যাক্সেস করার জন্য কোডে আমি এই জাতীয় কোড চালাতে পারি:

...
$entity->get('field_state')->value;
...

আমি AL বা একে-র মতো মান পাই। আমি কীভাবে আলাবামা বা আলাস্কার মতো লেবেল পেতে পারি?



1
এটি কেবল ক্ষেত্রের লেবেল পাওয়ার সাথে সম্পর্কিত। আমি একটি নির্বাচিত তালিকা থেকে একটি নির্বাচিত মান খুঁজছি।
আলবার্তস্কি 4'17

উত্তর:


20

আরও ভাল উপায় আছে কিনা তা নিশ্চিত নই তবে আমি প্রথমে অনুমোদিত মানগুলি পেয়ে মান পেয়েছি।

$allowed_values = $state->getFieldDefinition('field_state')->getFieldStorageDefinition()->getSetting('allowed_values');
$state_value = $state->get('field_state')->value;
$info['state_name'] = $allowed_values[$state_value];

5
অনুমোদিত মানগুলি পাওয়াটাই মূলত সঠিক উপায়, তবে তা পাওয়া সহজ হতে পারে: $ state-> getFieldD Definition ('ফিল্ড_স্টেট') -> getFieldStorageD Definition () -> getSetting ('परवानगी_মূল্য')।
বেরদির

3

সঠিক উপায় হ'ল অপশন_গ্রেড_ভ্যালু () ফাংশন ব্যবহার করা । কারণ ক্ষেত্রটিতে "অনুমোদিত_মূল্যগুলি" সেটিংস নাও থাকতে পারে এবং বিকল্পগুলি "অনুমোদিত_মূল্য_কাজ" দ্বারা সরবরাহ করা যেতে পারে।

সরাসরি উদাহরণ:

কেস # 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);

ড্রুপাল উত্তরগুলিতে আপনাকে স্বাগতম! শুধু কৌতূহলী, এখন ওপি জিজ্ঞাসা করা লেবেলটি কোথায়? ভিতরে $allowed_options?
লেম্যানেক্স

ধন্যবাদ! হ্যাঁ, এটি ছিল $ অনুমতিপ্রাপ্ত_পেশনের ভিতরে। আমি আমার উত্তর সম্পাদনা করেছি এবং উদাহরণগুলি যুক্ত করেছি।
সত্তা

0

ড্রুপাল 7 টি উপায়:

$jid = $row->job_id_181;
if($jid)
{
    $jobNode = node_load($params['jid']);
    $key = $jobNode->field_job_location['und'][0]['value'];//2
    if($key)
    {
        $field = field_info_field('field_job_location');
        $label = $field['settings']['allowed_values'][$key];
        echo $label;
    }

}

আশা করি এটি ভবিষ্যতে কাউকে সহায়তা করবে।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.