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
/**
* @fișier
* Conține \Drupal\msul_views_alert_management\Plugin\views\area\alertManagement.
*/
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;
/**
* Definește un plugin de câmp de vizualizări.
*
* @ingroup views_field_handlers
*
* @ViewsField(„alertFieldManagement”)
*/
clasa alertFieldManagement extinde FieldPluginBase {
/**
* {@inheritdoc}
*/
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;
}
//... alt cod aici...
}
( 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)