অনুভূমিক ফর্ম উপাদান


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',
  );

কীটি হ'ল "ধারক-ইনলাইন" এ "# টিট্রিবিউটস" বৈশিষ্ট্যটি লাইন সেটিংস।

এই কোডটি দ্রুপাল 7 এর জন্য; ড্রুপাল 6 এর সমতুল্য কোডটি নিম্নলিখিত কোড দিয়ে শুরু হয়:

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

মনে করুন আপনি ড্রুপাল 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;
}

আমি বর্ণনাটি ইনলাইন রাখিনি, কারণ এটি সঠিকভাবে রেন্ডার হবে না কারণ এটি একটি "আইটেম" ফর্ম ক্ষেত্র ব্যবহার করছে। আমি আরও দেখতে পেলাম যে বিবরণটি অন্তর্ভুক্ত করার ফলে ফর্মটি খুব বেশি স্থান গ্রহণ করবে। (কল্পনা করুন যদি অন্তর্ভুক্ত বর্ণনটি দীর্ঘতর হয় এবং একক লাইনে স্থাপন করা হয় তবে কী হবে))

ড্রপাল 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

কোড ছাড়াই এটি করার কোনও উপায় আছে? ফর্ম প্রদর্শনে আমার খুব ভাল নিয়ন্ত্রণ আছে তবে ডিএস অতিরিক্ত কয়েকটি কলাম ব্যতীত, তবে ফর্ম ইনপুট ডেটার জন্য ওয়েবফর্ম লেআউট মডিউলের মতো দানাদার কিছুই নেই
ব্রুনো ভিনসেন্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.