Я создаю поле настраиваемых представлений, и мне нужно, чтобы 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 расширяет FieldPluginBase {
/**
* {@inheritdoc}
*/
публичная функция рендеринга (ResultRow $values) {
$выход = массив();
$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]!="Скрытый"){
$ вывод = [
'пользовательское оповещение' => [
'#type' => 'контейнер',
'#атрибуты' => [
'класс' => ['предупреждение пользователя'],
],
'userAlertClose' => [
'#type' => 'контейнер',
'#атрибуты' => [
'uuid' => $uuid,
'class' => ['user-alert-close-button'],
],
'tempButton' => ['#разметка' => 'X'],
],
'текст предупреждения' => [
'#markup' => check_markup($body[0]['value'],$body[0]['format']),
],
],
'# прикрепленный' => [
'библиотека' => ['msul_views_alert_management/alert_field_management-js'],
'drupalSettings' => [
'msul_views_alert_management' => [
'uuid' => $uuid,
],
],
],
];
}
вернуть $ вывод;
}
//... здесь другой код...
}
( функция ($, Drupal, drupalSettings){
uuid = drupalSettings.msul_views_alert_management.uuid;
в то время как ($('[uuid="'+uuid+'"]').длина > 1){
$('[uuid="'+uuid+'"]').last().closest(".views-row").remove();
}
$('[uuid="'+uuid+'"]').on('щелчок',
функция () {
$(this).closest(".views-row").remove();
document.cookie = "EUA-"+uuid+"=Скрытый;путь=/;";
}
);
})(jQuery, Drupal, настройки drupal)