আমি কীভাবে একটি নির্দিষ্ট ক্ষেত্রের ক্ষেত্র পেতে পারি?


13

আমি দেখেছি সত্তা এবং বান্ডিল দ্বারা ক্ষেত্র তালিকা পেতে কিভাবে field_info_instances()এবং field_info_field(), কিন্তু আমি একটি নির্দিষ্ট ধরনের সমস্ত ক্ষেত্রগুলি পেতে একটি উপায় এইজন্য করছি না।

আমি যা চাই তা করতে এটি রান্না করতে সক্ষম হয়েছি:

function field_get_fields_of_type($type) {
  $fields_info = field_info_instances();
  $return = array();
  foreach ($fields_info as $entity => $bundles) {
    foreach ($bundles as $bundle => $fields) {
      foreach ($fields as $field_name => $info) {
        $more_info_because_type_isnt_included = field_info_field($field_name);
        if ( $more_info_because_type_isnt_included['type'] == $type) {
          $return[$field_name] = $more_info_because_type_isnt_included;
        }
      }
    }
  }
  return $return;
}

dpm(field_get_fields_of_type('entityreference')); // prints out all entityreference fields

তবে এটি কোডের একটি ভয়াবহ বলে মনে হচ্ছে এবং এমন কিছু পাওয়ার জন্য ভয়ঙ্কর প্রচুর লুপিং রয়েছে যা সম্ভবত ফিল্ড এপিআইয়ের মাধ্যমে পৌঁছনীয়।

এমন কি এমন কোনও ফিল্ড এপিআই ফাংশন সম্পর্কে জানেন যে আমি যে ডেটাটি খুঁজছি তা আরও দক্ষতার সাথে পুনরুদ্ধার করবে?

উত্তর:


23

আমি অন্য দিনটি পেরিয়ে এসেছি এবং এই প্রশ্নটি দেখে মনে পড়ে গেছে, সুতরাং এটি এখানে একরকম খুব অজানা ফাংশন (আমি যে কাউকে ব্লগে বা কোনও কিছুতে এটি উল্লেখ করতে দেখেছি):

field_read_fields ()

এবং সহকর্মী ফাংশন:

field_read_instances ()

উদাহরণস্বরূপ, সমস্ত ট্যাক্সোনমি শব্দ ক্ষেত্র পান:

$taxonomy_fields = field_read_fields(array('type' => 'taxonomy_term_reference'));

বা মেশিনের নাম সহ কোনও ক্ষেত্রের উদাহরণগুলি পান field_image:

$image_field_instances = field_read_instances(array('field_name' => 'field_image'));
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.