Możesz użyć kodu podobnego do poniższego, używanego przez moduł Node w 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',
);
Kluczem są ustawienia wiersza atrybutu „#attributes” dla „kontener-inline”.
Ten kod dotyczy Drupala 7; równoważny kod dla Drupal 6 zaczyna się od następującego kodu:
$form['options'] = array(
'#type' => 'fieldset',
'#title' => t('Update options'),
'#prefix' => '<div class="container-inline">',
'#suffix' => '</div>',
);
Załóżmy, że używasz Drupala 6, a następnie twój kod powinien zostać zmieniony na coś podobnego do następującego:
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;
}
Nie wstawiłem opisu, ponieważ nie byłby poprawnie renderowany, ponieważ używa pola formularza „item”. Uważam również, że wstawienie opisu spowoduje, że formularz zajmie zbyt dużo miejsca. (Wyobraź sobie, co by się stało, gdyby wstawiony opis byłby dłuższy i umieszczony w jednym wierszu).
Style CSS, które Drupal 7 dodaje do elementów wbudowanych w kontener, są następujące.
/**
* 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;
}
Są dodawane z system.base.css .
float
wcontainer-inline
klasie CSS a .