गतिशीलভাবে দ্রুপাল 7 এ ফিল্ড এপিআই ক্ষেত্রগুলি লুকিয়ে / দেখানো হচ্ছে


14

আমি একটি 'নতুন যুক্ত করুন' ফর্ম সহ একটি সত্তা তৈরি করেছি। সত্তা নিজেই সীমিত সংখ্যক প্রকৃত ভেরিয়েবল আছে। আমি কাস্টম ফিল্ডস (অর্থাত্ ফিল্ড এপিআই) ব্যবহার করার জন্য প্রয়োজনীয় অতিরিক্ত অতিরিক্ত ডেটা যুক্ত করেছি।

এই পর্যায়ে আমার যা করা দরকার তা অন্য ক্ষেত্রের মানের ভিত্তিতে একটি ক্ষেত্রকে গতিশীলভাবে লুকিয়ে রাখতে সক্ষম। উদাহরণস্বরূপ, যদি কোনও ড্রপ-ডাউন ফিল্ডের মান মান হিসাবে সেট করা থাকে তবে অন্য ক্ষেত্রটি লুকানো উচিত, অন্যথায় এটি দেখানো উচিত।

আমি যা দেখতে পাচ্ছি তা থেকে ফর্ম এপিআই ব্যবহার করে তৈরি ক্ষেত্রগুলিতে এই কার্যকারিতা যুক্ত করা কিছুটা সহজ (অর্থাত্ এজেএক্স সম্পত্তি হিসাবে) তবে সংযুক্ত ক্ষেত্রগুলি ব্যবহার করে এটি অর্জনের কোনও উপায় আছে কি? কাস্টম জাভাস্ক্রিপ্ট ব্যবহার করে আমার কোনও সমস্যা নেই যদি এটি হ'ল এটি সমাধান করার প্রয়োজন হয়।


আমি নিশ্চিত না হলে আছি drupal.org/project/conditional_fields D7 জন্য এখনও যেতে প্রস্তুত, কিন্তু এটি মধ্যে খুঁজছেন মূল্য হতে পারে
Jukebox

উত্তর:


5

jQuery এর জন্য ভাল কাজ করে:

(function($) {
  $(document).ready(function() {
    $('#select1').change(function() {
      switch ($(this).val()) {
        case '1':
          $('#field2').hide();
          break;
        default:
          $('#field2').show();
          break;
      }
    });
  });
}) (jQuery);

হ্যাঁ, আমি ফর্ম পৃষ্ঠায় drupal_add_js ব্যবহার করে শেষ করেছি এবং jQuery এ এটি শেষ করেছি। আমি কেবল ভাবছিলাম যে এটি করার জন্য আরও 'দ্রুপাল' উপায় আছে কিনা।
এনআরএফ

আমি উল্লেখ করব যে আমি দ্রুপাল # স্টেটের দৃশ্যমানতার দিকে এগিয়ে যাওয়ার বড় ভক্ত নই, এ কারণেই আমি এটি উপরে প্রস্তাব করিনি suggest
কিথ্ম

@ কিথম আপনি কেন রাজ্যের অনুরাগী নন (দয়া করে ২০১৫, ডি 7 হিসাবে) আপনি কী তা ব্যাখ্যা করতে পারেন? আমি এমন একটি প্রকল্পে কাজ করছি যেখানে আমরা # স্টেট বনাম দ্রুপাল_এডি_জেএস ব্যবহার করার সিদ্ধান্ত নেওয়ার চেষ্টা করছি। কেন আপনি মনে করেন যে একজনকে অন্যের চেয়ে ভাল পছন্দ?
নীল 928

এটি আমার মতে বৈধ প্রোগ্রামারদের পছন্দের বিষয়; আমার যুক্তি আপনার চেয়ে পৃথক হতে পারে। এটি বলেছিল, অনুশীলনে আমি বরং জাভা স্ক্রিপ্ট / jQuery-তে পাওয়া ফাংশনটির ডুপ্লিকেট করে এমন একটি অন্য সিনট্যাক্সের অবলম্বন পছন্দ করি না। আমি যখন # তম চেষ্টা করেছি, তখন আমি ব্যবহারের কেসগুলিও পেয়েছি যার জন্য এটি স্পষ্টতই সীমাবদ্ধভাবে নকশাকৃত। যখন এই সমস্যাগুলির ব্যবহারের বাইরে আমার সমস্যাটি প্রসারিত হয়েছিল, তখন আমাকে পুরোপুরি কোনওভাবেই সরল জাভাস্ক্রিপ্টে আবার লিখতে হয়েছিল।
কিথ্ম

19

ড্রুপাল 7 এ আপনি #statesকাস্টম jQuery স্ক্রিপ্টের পরিবর্তে $ ফর্ম ব্যবহার করতে পারেন । উদাহরণ:

  $form['student_type'] = array(
    '#type' => 'radios',
    '#options' => array(
      'high_school'   => t('High School'),
      'undergraduate' => t('Undergraduate'),
      'graduate'      => t('Graduate'),
    ),
    '#title' => t('What type of student are you?')
  );

  // High school information.
  $form['high_school']['tests_taken'] = array(
    '#type' => 'checkboxes',
    '#options' => drupal_map_assoc(array(t('SAT'), t('ACT'))),
    '#title' => t('What standardized tests did you take?'),
    // This #states rule says that this checkboxes array will be visible only
    // when $form['student_type'] is set to t('High School').
    // It uses the jQuery selector :input[name=student_type] to choose the
    // element which triggers the behavior, and then defines the "High School"
    // value as the one that triggers visibility.
    '#states' => array(
      'visible' => array(   // action to take.
        ':input[name="student_type"]' => array('value' => 'high_school'),
      ),
    ),
  );

আপনি যদি #statesএকাধিক মান শর্তের জন্য ব্যবহার করতে চান তবে এখানে উদাহরণ রয়েছে :

 $form['student_type'] = array(
    '#type' => 'checkboxes',
    '#options' => array(
      'high_school'   => t('High School'),
      'undergraduate' => t('Undergraduate'),
      'graduate'      => t('Graduate'),
    ),
    '#title' => t('What type of student are you?')
  );

  // High school information.
  $form['high_school']['tests_taken'] = array(
    '#type' => 'textfield',
    '#title' => t('What standardized tests did you take?'),
    '#states' => array(
      'visible' => array(   // action to take.
        ':input[name="student_type[high_school]"]' => array('checked' => TRUE),
        ':input[name="student_type[undergraduate]"]' => array('checked' => TRUE),
        ':input[name="student_type[graduate]"]' => array('checked' => FALSE),
      ),
    ),
  );

দেখুন form_example/form_example_states.incথেকে মডিউল উদাহরণ আরো বিস্তারিত জানার এবং উদাহরণ জন্য।


এর কথা বলতে #statesগেলে, আমি আরও জটিল দৃশ্যমান অবস্থার সংজ্ঞা দেওয়ার কোনও উপায় পাইনি যেমন: কন্ট্রোল বি মান যখন অ্যারেতে থাকে তখন নিয়ন্ত্রণ ক লুকান A (x, y, z)। আপনি কি এর জন্য একটি সিনট্যাক্স জানেন?
আর্তুর

1
উপরে আমার আপডেট দেখুন
দুধভস্কি

4

আপনার শর্তসাপেক্ষ ক্ষেত্রগুলি চেষ্টা করা উচিত , আমি মনে করি এই কাজের জন্য এই মডিউলটি আবশ্যক। আপনি ব্যবহারকারী-বান্ধব অ্যাডমিন ইন্টারফেসে ক্ষেত্রগুলির মধ্যে নির্ভরতা সেট করতে পারেন। উদাহরণস্বরূপ, যদি আপনি নির্ধারণ করতে পারেন Aশুধুমাত্র হতে ক্ষেত্র প্রোফাইল যদি Bক্ষেত্রের মান "হয়েছে 1234 ", অথবা আপনি সেট করতে পারেন Cপাঠ্যক্ষেত্র হতে প্রোফাইল শুধুমাত্র যখন Dক্ষেত্র পরীক্ষা করা হয়, অথবা সেট Eকরার ক্ষেত্র অদৃশ্য যদি Fহয় দৃষ্টি নিবদ্ধ করা ইত্যাদি

আপলোড ফর্মটিতে, এই নির্ভরতাগুলি ক্লায়েন্ট-সাইডে সেট করা হবে, নোড প্রদর্শনে, এই নির্ভরতাগুলি সার্ভার-সাইডে সেট করা হবে।

আপনি এই নির্ভরতাগুলি সেট করতে পারেন admin/structure/types/manage/[YOURCONTENTTYPESMACHINENAME]/dependencies

শর্তাধীন ক্ষেত্রসমূহ (চিত্রটির উত্স: প্রকল্পের পৃষ্ঠা )

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