it-swarm-es.com

¿Cuándo debe usarse el elemento de formulario "contenedor"?

El módulo Sistema define el elemento de formulario contenedor, pero ese elemento de formulario no está documentado en la Referencia de API de formulario.

¿Cuándo debe usarse ese elemento de forma? ¿Cual es su propósito?

6
kiamlaluno

Parece que se puede usar cuando desea ajustar una parte del formulario en un div, por ejemplo, para poder agregarle algunas clases.

Algunos ejemplos de core son los siguientes:

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

Formas en Drupal 6 de uso frecuente #prefix y #suffix en el primer/último elemento para hacer esto; esto es mucho mejor porque es más fácil agregar elementos adicionales o moverlos.

Podría usar esto en algunos lugares en mis propios módulos contribuidos, en realidad. ;)

8
Berdir

En D6, a menudo había veces en las que necesitabas agregar un <div> alrededor de un elemento FAPI (por ejemplo con #ahah/#ajax), por lo que container es una solución más consistente en lo que respecta a la API de formularios a este patrón común que agregar un contenedor div mediante #prefix/#suffix.

0
wildpeaks