Нахождение hook_ENTITY_TYPE_access
/hook_comment_access
не работает при попытке возврата AccessResult::forbidden()->cachePerUser()
после сравнения идентификатора владельца комментария и текущего идентификатора пользователя (вероятно, связанного: #2879087), не могли бы вы попробовать следующую логику предварительной обработки? Поскольку в настоящее время у меня нет проекта, чтобы проверить это самостоятельно, я не уверен, работает ли он таким образом, и если #простой текст
может быть просто (неправильно) использован в качестве переключателя очистки кеша в шаблоне.
/**
* Реализует hook_preprocess_HOOK().
*/
функция MYMODULE_preprocess_comment(&$variables) {
$переменные['собственный_комментарий'] = [
'#plain_text' => 'нет',
'#кэш' => [
'контексты' => ['пользователь'],
],
];
/** @var \Drupal\comment\Entity\Comment $comment */
$comment = $variables['elements']['#comment'];
if ($comment->getOwner()->id() === \Drupal::currentUser()->id()) {
$variables['own_comment']['#plain_text'] = 'yes';
}
}
{% if own_comment['#plain_text'] == 'да' %}
{{ содержание }}
{% еще %}
{{ 'Это не ваш комментарий'|t }}
{% конец%}
Может быть, я на самом деле делаю то же самое, что и вы, и, в конце концов, единственный способ - реализовать свой собственный форматировщик полей комментариев, подобный тому, что в Управление комментариями к собственному контенту модуль.