Dans Drupal 8, le rendu des tableaux ressemble beaucoup à Drupal 7. Vous construisez des tableaux multidimensionnels de lignes et de colonnes en PHP que Drupal transforme respectivement en a <tr>
et en <td>
s. Il existe toujours ce drupalisme déroutant connu sous le nom 'data'
qui vous permet d'ajouter des éléments de tableau de rendu en tant que données de cellule (à ne pas confondre avec les attributs de données).
On m'a donné un site où le développeur a choisi d'utiliser des «données» pour afficher le contenu de la cellule, mais je ne peux pas comprendre comment ajouter une classe aux <td>
alentours des données.
J'ai lu le code source et la documentation de Table.php et je suis au courant du nouveau #wrapper_attributes
mais je ne peux pas le casser.
J'ai essayé au moins quatre façons d'ajouter la classe, et aucune ne fonctionne.
$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'],
],
];