Creez un câmp de vizualizări personalizate și am nevoie ca acesta să aibă JS atașat la funcționalitatea de clic. Când obțin un rezultat de vizualizări, funcționează perfect, dar când am mai multe rezultate, se atașează doar la unul dintre ele. Cum fac ca acesta să se atașeze la toate rândurile de rezultat?
Mai jos este codul pentru redarea câmpului și js-ul care este atașat. Orice ajutor este apreciat.
<?php
spațiu de nume Drupal\msul_views_alert_management\Plugin\views\field;
utilizați Drupal\Core\Form\FormStateInterface;
utilizați Drupal\views\Render\ViewsRenderPipelineMarkup;
utilizați Drupal\views\ResultRow;
utilizați Drupal\views\ViewExecutable;
utilizați Drupal\views\Plugin\views\field\FieldPluginBase;
clasa alertFieldManagement extinde FieldPluginBase {
funcția publică randare (ResultRow $valori) {
$ieșire = matrice();
$uuid=((matrice)($valori->_entitate))[chr(0).'*'.chr(0).'valori']['uuid']['x-default'];
$body=((array)($values->_entity))[chr(0).'*'.chr(0).'values']['body']['x-default'];
if(!isset($_COOKIE['EUA-'.$uuid]) || $_COOKIE['EUA-'.$uuid]!="Ascuns"){
$ieșire = [
'userAlert' => [
'#type' => 'container',
'#attributes' => [
'class' => ['alerta utilizatorului'],
],
'userAlertClose' => [
'#type' => 'container',
'#attributes' => [
'uuid' => $uuid,
'class' => ['butonul-alerta-utilizator-închidere'],
],
'tempButton' => ['#markup' => 'X'],
],
'alertText' => [
'#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,
],
],
],
];
}
returnează $ieșire;
}
}
( funcția ($, Drupal, drupalSettings){
uuid = drupalSettings.msul_views_alert_management.uuid;
while($('[uuid="'+uuid+'"]').lungime > 1){
$('[uuid="'+uuid+'"]').last().closest(".views-row").remove();
}
$('[uuid="'+uuid+'"]').on('clic',
function() {
$(this).closest(".views-row").remove();
document.cookie = "EUA-"+uuid+"=Hidden;path=/;";
}
);
})(jQuery, Drupal, drupalSettings)