क्षैतिज रूप तत्व


12

मैंने फॉर्म का वर्णन किया है, लेकिन हर तत्व पिछले एक के तहत स्थित है। मुझे उस फॉर्म का वर्णन करने की आवश्यकता है जहां सभी तत्वों को क्षैतिज रूप से रखा जाएगा लेकिन लंबवत नहीं। यह मेरा रूप है:

function contact_register_form($form, &$form_state) {
  $form['description'] = array(
    '#type' => 'item',
    '#title' => t('Sign up to be notified when your community launches:'),
  );

  $form['email'] = array(
    '#type' => 'textfield',
    '#title' => t('Email'),
  );

  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => 'Add me',
  );    

  return $form;
}

जवाबों:


17

आप निम्नलिखित के समान कोड का उपयोग कर सकते हैं, जिसका उपयोग नोड मॉड्यूल द्वारा किया जाता है node_filter_form()

  // Build the 'Update options' form.
  $form['options'] = array(
    '#type' => 'fieldset', 
    '#title' => t('Update options'), 
    '#attributes' => array('class' => array('container-inline')), 
    '#access' => $admin_access,
  );

  // ...

  $form['options']['operation'] = array(
    '#type' => 'select', 
    '#title' => t('Operation'), 
    '#title_display' => 'invisible', 
    '#options' => $options, 
    '#default_value' => 'approve',
  );

कुंजी "कंटेनर-इनलाइन" के लिए "#attributes" विशेषता लाइन सेटिंग्स है।

यह कोड Drupal 7 के लिए है; Drupal 6 के लिए समान कोड निम्नलिखित कोड से शुरू होता है:

  $form['options'] = array(
    '#type' => 'fieldset', 
    '#title' => t('Update options'), 
    '#prefix' => '<div class="container-inline">', 
    '#suffix' => '</div>',
  );

मान लें कि आप Drupal 6 का उपयोग कर रहे हैं, तो आपका कोड निम्नलिखित के समान कुछ में बदल जाना चाहिए:

function contact_register_form($form, &$form_state) {
  $form['description'] = array(
    '#type' => 'item',
    '#title' => t('Sign up to be notified when your community launches:'),
  );

  $form['email'] = array(
    '#type' => 'textfield',
    '#title' => t('Email'),
    '#prefix' => '<div class="container-inline">', 
  );

  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => 'Add me',
    '#suffix' => '</div>',
  );    

  return $form;
}

मैंने विवरण इनलाइन नहीं डाला, क्योंकि यह सही ढंग से प्रदान नहीं किया जाएगा क्योंकि यह "आइटम" फ़ॉर्म फ़ील्ड का उपयोग कर रहा है। मुझे यह भी पता चलता है कि विवरण को रेखांकित करने से रूप बहुत अधिक जगह लेगा। (कल्पना करें कि यदि इनलाइन विवरण लंबा होगा, और एक पंक्ति में रखा जाएगा तो क्या होगा।)

सीएसएस शैलियाँ जो Drupal 7 कंटेनर-इनलाइन तत्वों को जोड़ती हैं, वे निम्नलिखित हैं।

/**
 * Inline items.
 */
.container-inline div,
.container-inline label {
  display: inline;
}
/* Fieldset contents always need to be rendered as block. */
.container-inline .fieldset-wrapper {
  display: block;
}

उन्हें system.base.css से जोड़ा जाता है


1
और कक्षा floatमें सीएसएस लागू करने के लिए मत भूलना container-inline
tostinni

क्या बिना कोड के ऐसा करने का कोई तरीका है? प्रपत्रों के प्रदर्शन पर मेरा बहुत अच्छा नियंत्रण है, लेकिन डीएस अतिरिक्त में कुछ स्तंभों को छोड़कर, लेकिन फॉर्म इनपुट डेटा के लिए वेबफॉर्म लेआउट मॉड्यूल की तरह कुछ भी दानेदार नहीं है
ब्रूनो विंसेंट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.