Găsind hook_ENTITY_TYPE_access
/hook_comment_access
nu funcționează când încearcă să revină AccessResult::forbidden()->cachePerUser()
după compararea ID-ului proprietarului comentariului și ID-ul utilizatorului actual (probabil legat de: #2879087), puteți încerca, vă rog, următoarea logică de preprocesare? Deoarece în prezent nu am niciun proiect pentru a verifica acest lucru în mod corespunzător, nu sunt sigur dacă funcționează așa și dacă #text simplu
poate fi pur și simplu folosit (greșit) ca comutator de blocare a memoriei cache într-un șablon.
/**
* Implementează hook_preprocess_HOOK().
*/
funcția MYMODULE_preprocess_comment(&$variabile) {
$variables['own_comment'] = [
'#plain_text' => 'nu',
'#cache' => [
'contexts' => ['utilizator'],
],
];
/** @var \Drupal\comment\Entity\Comment $comentar */
$comment = $variables['elements']['#comment'];
if ($comment->getOwner()->id() === \Drupal::currentUser()->id()) {
$variables['own_comment']['#plain_text'] = 'da';
}
}
{% if own_comment['#plain_text'] == 'da' %}
{{ continut }}
{% altfel %}
{{ „Nu este comentariul tău”|t }}
{% endif %}
Poate că eu fac de fapt același lucru pe care l-ați făcut și, în cele din urmă, singura modalitate este să implementați propriul dvs. formatator de câmpuri de comentarii, similar cu cel din Gestionați comentariile la propriul conținut modul.