ฉันกำลังสร้างฟิลด์มุมมองที่กำหนดเองและต้องการให้มี JS แนบมากับฟังก์ชันการคลิก เมื่อฉันได้รับผลการดูหนึ่งรายการ มันทำงานได้อย่างสมบูรณ์ แต่เมื่อฉันมีผลลัพธ์หลายรายการ มันจะแนบกับหนึ่งในนั้นเท่านั้น ฉันจะแนบสิ่งนี้กับแถวผลลัพธ์ทั้งหมดได้อย่างไร
ด้านล่างนี้คือรหัสสำหรับการแสดงฟิลด์และ js ที่แนบมา ความช่วยเหลือใด ๆ ที่ชื่นชม
<?php
/**
* @ไฟล์
* ประกอบด้วย \Drupal\msul_views_alert_management\Plugin\views\area\alertManagement
*/
เนมสเปซ Drupal\msul_views_alert_management\Plugin\views\field;
ใช้ Drupal\Core\Form\FormStateInterface;
ใช้ Drupal\views\Render\ViewsRenderPipelineMarkup;
ใช้ Drupal\views\ResultRow;
ใช้ Drupal\views\ViewExecutable;
ใช้ Drupal\views\Plugin\views\field\FieldPluginBase;
/**
* กำหนดปลั๊กอินฟิลด์มุมมอง
*
* @ingroup views_field_handlers
*
* @ViewsField("alertFieldManagement")
*/
class alertFieldManagement ขยาย FieldPluginBase {
/**
* {@inheritdoc}
*/
ฟังก์ชั่นสาธารณะแสดงผล (ResultRow $values) {
$output = อาร์เรย์();
$uuid=((อาร์เรย์)($values->_entity))[chr(0).'*'.chr(0).'values']['uuid']['x-default'];
$body=((อาร์เรย์)($values->_entity))[chr(0).'*'.chr(0).'values']['body']['x-default'];
if(!isset($_COOKIE['EUA-'.$uuid]) || $_COOKIE['EUA-'.$uuid]!="Hidden"){
$เอาท์พุท = [
'userAlert' => [
'#type' => 'คอนเทนเนอร์',
'#attributes' => [
'คลาส' => ['การแจ้งเตือนผู้ใช้'],
]
'userAlertClose' => [
'#type' => 'คอนเทนเนอร์',
'#attributes' => [
'uuid' => $uuid,
'class' => ['ผู้ใช้-alert-close-button'],
]
'tempButton' => ['#markup' => 'X'],
]
'ข้อความแจ้งเตือน' => [
'#markup' => check_markup($body[0]['value'],$body[0]['format']),
]
]
'#attached' => [
'library' => ['msul_views_alert_management/alert_field_management-js'],
'drupalSettings' => [
'msul_views_alert_management' => [
'uuid' => $uuid,
]
]
]
];
}
ส่งคืน $output;
}
//... รหัสอื่น ๆ ที่นี่ ...
}
( ฟังก์ชัน ($, Drupal, drupalSettings){
uuid = drupalSettings.msul_views_alert_management.uuid;
ในขณะที่($('[uuid="'+uuid+'"]').ความยาว > 1){
$('[uuid="'+uuid+'"]').last().closest(".views-row").remove();
}
$('[uuid="'+uuid+'"]').บน('คลิก',
การทำงาน() {
$(นี้).closest(".views-row").remove();
document.cookie = "EUA-"+uuid+"=Hidden;path=/;";
}
);
})(jQuery, Drupal, drupalSettings)