У меня есть пользовательский блок, который отображает количество событий, добавленных в избранное (модуль флага). Я использую шаблон TWIG для отображения этих результатов. Я хочу обновить содержимое блока сразу после того, как пользователь пометит/снимет флаг с узла. В настоящее время я могу получить обновленное значение, только если перезагружу страницу.
build() выглядит так:
класс FavoritesBlock расширяет BlockBase
{
/**
* {@inheritdoc}
*/
публичная функция getCacheMaxAge()
{
вернуть 0;
}
построение публичной функции()
{
$uid = \Drupal::currentUser();
если ($uid->проверено()) {
$flag = \Drupal::service('flag')->getFlagById('favorites');
$count = \Drupal::service('flag.count')->getUserFlagFlaggingCount($flag, $uid);
$test = "События добавлены в избранное: " . $количество;
$link_url = Url::fromUri("https://my-site/my-favorite-events");
$text = Link::fromTextAndUrl(t($test), $link_url)->toString();
}
возвращаться [
'#разметка' => $текст,
'#cache' => массив(
'теги' => ['config:node_type_list'],
'максимальный возраст' => 0,
),
];
}
}
Я также столкнулся с EventSubscriber, который, кажется, запускается именно тогда, когда я хочу, то есть при пометке/снятии отметки, но я не знаю, полезен ли он в этой ситуации, у меня мало опыта.
Как можно добиться автоматической перезагрузки блока?