Cómo hacer que el conjunto de campos personalizado se contraiga de forma predeterminada en Drupal 8


12

En Drupal 7 existía la opción de tener el conjunto de campos contraíble o no, y restringir el estado predeterminado de este elemento de formulario (contraído o no contraído). Ejemplo:

$form['contact_data'] = array(
        '#title' => t("Contact data"),
        '#type' => 'fieldset',
        '#collapsible' => TRUE,
        '#collapsed' => FALSE,
);

Ahora, en Drupal 8 no puedo encontrar atributos #collapsibley #collapseden Drupal\Core\Render\Element\Fieldset. En la documentación oficial del elemento Fieldset no se menciona ningún elemento nuevo, que debería sustituir al elemento Fieldset.

Tampoco hay una descripción general de los elementos de la API de formulario para Drupal 8, como para Drupal 7. Debe buscar manualmente todas las definiciones de Elementos de representación en el código, lo que lleva más tiempo (especialmente cuando desea ver una descripción general de los elementos y compararlos) .

Respuestas:


25

Todos los conjuntos de campos plegables se han reemplazado con elementos de detalles HTML5.

Fieldset y legand son muy difíciles de diseñar y ya no se recomienda usar con Drupal 8. En cambio, se reemplaza con una forma más cruzada del navegador, que son las etiquetas de Detalles y Resumen HTML5.

'#type' => 'details'

https://www.drupal.org/node/1852020

Drupal 7

$form['advanced'] = array(
  '#type' => 'fieldset',
  '#title' => t('Advanced settings'),
  '#collapsible' => TRUE,
  '#collapsed' => FALSE,
  '#description' => t('Lorem ipsum.'),
);

Drupal 8

$form['advanced'] = array(
  '#type' => 'details',
  '#title' => t('Advanced settings'),
  '#description' => t('Lorem ipsum.'),
  '#open' => TRUE, // Controls the HTML5 'open' attribute. Defaults to FALSE.
);

2
Gracias por la respuesta Pero nuevamente, estoy muy frustrado por el hecho de que este cambio (no pequeño) solo se describe en alguna página de "registro de cambios" y no se actualiza a las páginas de documentación oficial ... Ver: Online documentation: Not done...
Juraj Nemec

1
Los registros de cambios son el lugar perfecto para buscar cómo cambió X en Druapl 8. Son fáciles de buscar y siempre contienen ejemplos de antes / después. Tanto el código como la documentación se escriben principalmente en el tiempo libre de las personas. No te quejes, ayuda a mejorarlo.
Berdir el

@ Berdir Sí, sé que la documentación está escrita en tiempo libre y lo agradezco :) Pero personalmente no creo que los registros de cambios se puedan buscar fácilmente (excepto en google). Principal, como desarrollador, busca en la documentación (o en la documentación de la API), por lo que una simple referencia de enlace a un registro de cambio específico sería suficiente (y no lleva tanto tiempo como escribir esos ejemplos en los registros de cambio). Aparte de eso, debo admitir que los ejemplos de código en los registros de cambios son muy buenos.
Juraj Nemec

¿Dónde agrega este código en los archivos de drupal 8?
DavSev

0

Ejemplo usando la notación HereDoc para almacenar la descripción HTML:

$desc_html = <<<HTML
<p>
  <strong>Put the HTML to be displayed when open in here.</strong>
<p>
HTML;

$form['advanced'] = array(
  '#type' => 'details',
  '#title' => t('Advanced settings'),
  '#description' => t($desc_html),
  '#open' => TRUE, // Controls the HTML5 'open' attribute. Defaults to FALSE.
);
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.