it-swarm-eu.dev

Kdy by měl být použit prvek formuláře „kontejner“?

Modul System definuje element container form, ale tento element formuláře není v Form API Reference zdokumentován.

Kdy by měl být tento tvarový prvek použit? Jaký je jeho účel?

6
kiamlaluno

Vypadá to, že může být použit, když chcete zabalit část formuláře do divu, například aby bylo možné do něj přidat nějaké třídy.

Některé příklady z jádra jsou následující:

  • field_default_form ()

    // 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'],
    );
    
  • node_filter_form ()

    $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')),
    );
    
  • search_form ()

    $form['basic'] = array(
      '#type' => 'container',
      '#attributes' => array('class' => array('container-inline')),
    );
    

Formuláře v Drupal 6 často používaných #prefix a #suffix na prvním/posledním prvku, který to provede; to je mnohem lepší, protože je snazší přidávat další položky nebo je přesouvat.

Vlastně bych to mohl použít na několika místech ve svých vlastních přispěných modulech. ;)

8
Berdir

V D6 byly často časy, kdy byste museli přidat <div> kolem prvku FAPI (například s #ahah/#ajax), takže container je konzistentnějším řešením, pokud jde o rozhraní Forms API, k tomuto společnému vzoru, než přidáním prvku wrapper div pomocí #prefix/#suffix.

0
wildpeaks