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


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.