ট্রিগার # স্টেটে একাধিক মান


18

আমি কীভাবে একাধিক মান ফর্ম এপিআই এর # স্টেটগুলিকে ট্রিগার করতে পারি?

উদাহরণস্বরূপ বলুন, আমি চেয়েছিলাম যে এই ক্ষেত্রটি কেবলমাত্র 5 টির মান (বর্তমানে নীচে কাজ করে) প্রদর্শিত হবে না, তবে মানগুলি 3, 4 বা 5 হয় তবে ক্ষেত্রটি দৃশ্যমান করতে চেয়েছিলাম।

'#states' => array(
    'visible' => array(
       ':input[name="field_star_rating"]' => array('value' => t('5')),
    ),
),

একটি নোট হিসাবে, আমি নিম্নলিখিত চেষ্টা করেছিলাম এবং এটি কার্যকর হয় না । এটি কেবল তখনই কাজ করে যখন মান '4' হয়

'#states' => array(
    'visible' => array(
        ':input[name="field_star_rating"]' => array('value' => t('5')),
        ':input[name="field_star_rating"]' => array('value' => t('4')),
    ),
),

এটিও কাজ করে না , মান '4' হলে এটি খুব কার্যকর হয়:

'#states' => array(
    'visible' => array(
        ':input[name="field_star_rating"]' => array('value' => t('5'), 'value' => t('4')),
    ),
),

উত্তর:


39

আপনার যা প্রয়োজন তা এখানে:

'#states' => array(
    'visible' => array(
        ':input[name="field_star_rating"]' => array(
            array('value' => t('5')),
            array('value' => t('4'))
        ),
    ),
),

এটি প্রকৃতপক্ষে সঠিক উপায়, বর্তমানকে সঠিক হিসাবে চিহ্নিত করা ভুল। আরও তথ্যের জন্য এই সমস্যাটি দেখুন: drupal.org/node/735528
রবিন

নিশ্চিত # স্টেটস এপিআই 2011 দীর্ঘ পথ ধরে এসেছে। সঠিক হিসাবে চিহ্নিত করা হচ্ছে।
সাইট্রিকগুই

এটি একটি দুর্দান্ত উত্তর, এবং আমি গুগল থেকে এখানে এসেছি, কয়েক ডজন বারের মতো ... একটি অনুগ্রহ চলেছে।
আইশক

এটি স্বাভাবিক দর্শনের জন্য কাজ করছে। কোনও 'এজাক্স' চালানোর পরে, এটি বারবার যুক্ত হয়েছিল
গুরু

3

D7-এ # জ্যাক্স ব্যবহার করা আমার একমাত্র উপায় figure

এখানে কয়েকটি সহায়ক টিপস রয়েছে আশা করি আমি শুরু করার আগে জানতে পারতাম।

  1. ফর্ম এপিএজে # জ্যাক্স দুর্দান্ত এবং শেখার উপযুক্ত
  2. # স্টেটগুলি ওআর বা এক্সওর সমর্থন করে না (কোনও প্যাচ ছাড়াই? http://drupal.org/node/735528 )
  3. dpm ($ ফর্ম); এবং কাস্টম জমা ফাংশনে var_dump ($ form_state) অমূল্য

উদাহরণ মডিউল থেকে এজেএক্স উদাহরণগুলির একটিতে পরিবর্তিত সংস্করণ এখানে।

function plugin_autotextfields($form, &$form_state) {

    $form['star_rating'] = array(
        '#type' => 'select',
        '#title' => t('Star Rating'),
        '#options' => array('_none' => '- select -', 5 => '5 Star', 4 => '4 Star', 3 => '3 Star', 2 => '2 Star', 1 => '1 Star'),
        '#ajax' => array(
            'callback' => 'plugin_autotextfields_callback',
            'wrapper' => 'textfields',
            'effect' => 'fade',
        ),
    );

    $form['textfields'] = array(
        '#title' => t("Fieldset Name"),
        '#prefix' => '<div id="textfields">',
        '#suffix' => '</div>',
        '#type' => 'fieldset',
        '#description' => t('Where the field will be placed'),
    );

    if (!empty($form_state['values']['star_rating']) && $form_state['values']['star_rating'] == 5) {
        $form['textfields']['review'] = array(
            '#type' => 'textfield',
            '#title' => t('Message if 5 stars'),
        );
    } else if (!empty($form_state['values']['star_rating'])) {
        $form['textfields']['review'] = array(
            '#type' => 'textfield',
            '#title' => t('Message if not 5 stars'),
        );
    }

    $form['submit'] = array(
        '#type' => 'submit',
        '#value' => t('Click Me'),
    );

    return $form;
}

function omfg_autotextfields_callback($form, $form_state) {
    return $form['textfields'];
}

আমি আশা করি এটি একই সমস্যার মধ্যে চলে এমন কাউকে সহায়তা করবে :)


কি দারুন! খুব সহায়ক উত্তর আমার বন্ধু। আমি # টি স্ট্যাটাসের সাথে আমার ইস্যুটি ঘিরে রেখেছি এবং এখন এটি কাজ করছে তবে আপনি যদি আমাকে একটি ক্লু-স্টিক দিয়ে থাপ্পড় মারেন তবে # জ্যাক্স এখন স্পষ্টতই সহজতর হত। এবং সেই ডিবাগিং টিপটি বোনাস হিসাবে? দুঃখিত আমি আপনাকে ক্ষুদ্র কর্মফল দিয়ে দিতে হবে। ;)
স্টিফগোসেলিন

3
 $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),
      ),
    ),
  );

PS আরও বৈশিষ্ট্যগুলির জন্য উদাহরণ মডিউলটি দেখুন "form_example / form_example_states.inc"

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