Если я хочу, чтобы мой массив рендеринга указывал Drupal, что он должен быть перестроен, когда, скажем, изменяется узел 1, я могу сделать что-то вроде этого:
$my_render_array = [
...
'#кэш' => [
'теги' => [
'узел: 1',
],
],
];
Как я могу сообщить Drupal, что мой массив рендеринга должен быть перестроен, когда переменная состояния фу
изменения?
Я пробовал это, но это не работает:
$my_render_array = [
...
'#кэш' => [
'теги' => [
'состояние: фу',
],
],
];
Бег:
drush sset foo bar
Не вызывает аннулирование моего кеша.
Сейчас для меня это двухэтапный процесс, мне нужно сделать что-то вроде этого:
$my_render_array = [
...
'#кэш' => [
'теги' => [
'some_custom_tag_that_i_invented',
],
],
];
drush sset foo bar
drush php "\Drupal::service('cache_tags.invalidator')->invalidateTags(['some_custom_tag_that_i_invented'])"
Ядро Drupal, кажется, использует теги кеша в форме «state:...», хотя и не так часто и только в рамках автоматических тестов:
# grep -R 'invalidateTags' core|состояние grep
core/modules/jsonapi/tests/src/Functional/CommentTest.php: Cache::invalidateTags(['state:jsonapi__entity_test_filter_access_blacklist']);
# grep -R 'состояние: jsonapi__entity_test_filter_access_blacklist' ядро
core/modules/jsonapi/tests/src/Functional/EntityTestTest.php: $cacheability->addCacheTags(['state:jsonapi__entity_test_filter_access_blacklist']);
core/modules/jsonapi/tests/src/Functional/CommentTest.php: Cache::invalidateTags(['state:jsonapi__entity_test_filter_access_blacklist']);
core/modules/jsonapi/tests/src/Functional/CommentTest.php: $cacheability->addCacheTags(['state:jsonapi__entity_test_filter_access_blacklist']);
core/modules/jsonapi/src/Access/TemporaryQueryGuard.php: $cacheability->addCacheTags(['state:jsonapi__entity_test_filter_access_blacklist']);
# grep -R 'jsonapi__entity_test_filter_access_blacklist' ядро
core/modules/jsonapi/tests/src/Functional/EntityTestTest.php: $cacheability->addCacheTags(['state:jsonapi__entity_test_filter_access_blacklist']);
core/modules/jsonapi/tests/src/Functional/CommentTest.php: \Drupal::state()->set('jsonapi__entity_test_filter_access_blacklist', [$this->entity->getCommentedEntityId()]);
core/modules/jsonapi/tests/src/Functional/CommentTest.php: Cache::invalidateTags(['state:jsonapi__entity_test_filter_access_blacklist']);
core/modules/jsonapi/tests/src/Functional/CommentTest.php: $cacheability->addCacheTags(['state:jsonapi__entity_test_filter_access_blacklist']);
core/modules/jsonapi/src/Access/TemporaryQueryGuard.php: $blacklist = \Drupal::state()->get('jsonapi__entity_test_filter_access_blacklist', []);
core/modules/jsonapi/src/Access/TemporaryQueryGuard.php: $cacheability->addCacheTags(['state:jsonapi__entity_test_filter_access_blacklist']);