web-gelistirme-sc.com

Yatay form öğeleri

Formu tarif ettim, ama oradaki her element bir öncekinin altında bulunuyor. Tüm öğelerin yatay olarak yerleştirileceği ancak dikey olarak yerleştirilmeyeceği formu açıklamam gerekiyor. Bu benim formum:

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;
}
12
RomanBadiornyi

node_filter_form() içindeki Node modülü tarafından kullanılan, aşağıdakine benzer bir kod kullanabilirsiniz.

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

Anahtar "#attributes" özniteliğinin "container-inline" satır ayarlarıdır.

Bu kod Drupal 7; Drupal 6 için eşdeğer kod aşağıdaki kodla başlar):

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

Drupal 6 kullandığınızı varsayarsak, kodunuz aşağıdakine benzer bir şekilde değiştirilmelidir:

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;
}

"Öğe" form alanı kullandığından, doğru bir şekilde oluşturulmayacağı için açıklamayı satır içine koymadım. Ayrıca, açıklamayı satır içine almanın formun çok fazla yer kaplamasına neden olacağını da buldum. (Satır içi açıklama daha uzun ve tek bir satıra yerleştirilirse ne olacağını hayal edin.)

Drupal 7 kapsayıcı satır içi öğelerine ekleyen CSS stilleri şunlardır.

/**
 * 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;
}

Bunlar system.base.css adresinden eklenir.

17
kiamlaluno