Systemモジュールはcontainerフォーム要素を定義しますが、そのフォーム要素はフォームAPIリファレンスに記載されていません。
そのフォーム要素はいつ使用する必要がありますか?その目的は何ですか?
たとえば、フォームにクラスを追加できるように、divでフォームの一部をラップする場合に使用できるようです。
コアのいくつかの例は次のとおりです。
// Also aid in theming of field widgets by rendering a classified container.
$addition[$field_name] = array(
'#type' => 'container',
'#attributes' => array(
'class' => array(
'field-type-' . drupal_html_class($field['type']),
'field-name-' . drupal_html_class($field_name),
'field-widget-' . drupal_html_class($instance['widget']['type']),
),
),
'#weight' => $instance['widget']['weight'],
);
$form['filters']['status'] = array(
'#type' => 'container',
'#attributes' => array('class' => array('clearfix')),
'#prefix' => ($i ? '<div class="additional-filters">' . t('and where') . '</div>' : ''),
);
$form['filters']['status']['filters'] = array(
'#type' => 'container',
'#attributes' => array('class' => array('filters')),
);
$form['basic'] = array(
'#type' => 'container',
'#attributes' => array('class' => array('container-inline')),
);
Drupalのフォーム6よく使われる#prefix
および#suffix
これを行う最初/最後の要素。これは、アイテムを追加したり移動したりするのが簡単なため、はるかに優れています。
実際に、これを自分の提供したモジュールのいくつかの場所で使用できます。 ;)
D6では、FAPI要素の周囲に<div>
を追加する必要がある場合がよくありました(たとえば、#ahah
/#ajax
を使用して)。そのため、container
の方が便利です#prefix
/#suffix
を使用してラッパーdivを追加するよりも、この一般的なパターンに対するForms APIに関する一貫したソリューション。