En Drupal 8, lo que hace Tablas es todavía mucho como Drupal 7. construir matrices multidimensionales de filas y columnas en PHP que se transforma en un Drupal <tr>
y <td>
s, respectivamente. Todavía existe este confuso Drupalismo conocido como 'data'
que le permite agregar elementos de matriz de renderizado como datos de celda (que no debe confundirse con los atributos de datos).
Me dieron un sitio donde el desarrollador eligió usar 'datos' para representar el contenido de la celda, pero no puedo entender cómo agregar una clase a <td>
los datos.
He leído el código fuente y la documentación de Table.php y estoy al tanto de lo nuevo, #wrapper_attributes
pero no puedo descifrarlo.
He intentado al menos cuatro formas de agregar la clase, y ninguna funciona.
$table['row-' . $row_id] = [
// Option 1: Class appears on <tr> tag
'#attributes' => [
'class' => ['option-1-row-attributes'],
'id' => 'row-' . $row_id,
'no_striping' => TRUE,
],
// Option 2: Class appears on <td> tag of first column.
'item' => [
'#markup' => $row['my_item']->label(),
'#wrapper_attributes' => [
'class' => ['option-2-markup-wrapper-attributes'],
],
],
// In the following section, the only item that works is
// the class on the <a> tag.
'edit_operation' => [
'data' => [
'#type' => 'link',
'#url' => Url::fromRoute('my_module.my_route', ['item' => $row_id]),
'#title' => $this->t('Edit'),
'#attributes' => [
// Option 3: Class appears on the anchor tag
'class' => ['use-ajax', 'option-3-link-attributes'],
'data-dialog-type' => 'modal',
'data-dialog-options' => Json::encode([
'width' => 700,
]),
],
// Option 4: Has no effect.
'#wrapper_attributes' => [
'class' => ['option-4-data-wrapper-attributes'],
],
],
// Option 5: Update: This appears to be the correct solution!
// Class appears on the <td>.
'#wrapper_attributes' => [
'class' => ['option-5-wrapper-attributes'],
],
// Option 6: Has no effect.
'#attributes' => [
'class' => ['option-6-attributes'],
],
// Option 7: Has no effect.
'class' => ['option-7-attributes'],
],
];