Trong Drupal 8, kết xuất Bảng vẫn rất giống với Drupal 7. Bạn xây dựng các mảng và cột đa chiều trong PHP mà Drupal biến đổi thành a <tr>
và <td>
s tương ứng. Vẫn còn vấn đề Drupalism khó hiểu này 'data'
cho phép bạn thêm các phần tử kết xuất dưới dạng dữ liệu ô (không bị nhầm lẫn với các thuộc tính dữ liệu).
Tôi đã được cung cấp một trang web nơi nhà phát triển chọn sử dụng 'dữ liệu' để hiển thị nội dung của ô, nhưng tôi không thể tìm ra cách thêm một lớp vào <td>
xung quanh dữ liệu.
Tôi đã đọc mã nguồn và tài liệu cho Table.php và tôi biết về cái mới #wrapper_attributes
nhưng tôi không thể bẻ khóa cái này.
Tôi đã thử ít nhất bốn cách để thêm lớp và không có cách nào hoạt động.
$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'],
],
];