Drupal 8 में, टेबल्स का प्रतिपादन करना अभी भी Drupal 7 की तरह है। आप PHP में पंक्तियों और स्तंभों के बहुआयामी सरणियों का निर्माण करते हैं, जो Drupal क्रमशः a <tr>
और <td>
s में बदल जाते हैं। अभी भी इस भ्रामक ड्रुपालिज़्म के रूप में जाना जाता 'data'
है जो आपको सेल डेटा के रूप में रेंडर एरे तत्वों को जोड़ने देता है (डेटा विशेषताओं के साथ भ्रमित होने की नहीं)।
मुझे एक साइट दी गई है, जहाँ डेवलपर ने सेल की सामग्री को प्रस्तुत करने के लिए 'डेटा' का उपयोग करने के लिए चुना है, लेकिन मैं यह पता नहीं लगा सकता कि <td>
डेटा के आसपास क्लास कैसे जोड़ें ।
मैंने Table.php के लिए स्रोत कोड और प्रलेखन पढ़ा है और मुझे नए के बारे में पता है #wrapper_attributes
लेकिन मैं यह नहीं कर सकता।
मैंने कक्षा को जोड़ने के लिए कम से कम चार तरीके आज़माए हैं, और कोई भी काम नहीं करता है।
$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'],
],
];