Não consegui adicionar um contexto de cache para trabalhar para entidades no drupal 8. Especificamente, estou indo para cabeçalhos: User-Agent. Eu tentei muitas variações sobre o seguinte em um módulo.
use Drupal\node\NodeInterface;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
function hook_entity_view_alter(&$build, EntityInterface $entity, EntityViewDisplayInterface $display){
if($entity->getType() == 'relevant_type'){
$build['#cache']['contexts'][] = 'headers:User-Agent';
}
}
Estou tentando obter acesso ao nó a ser verificado quando esse contexto muda. Eu também tentei na hook_entity_build_defaults_alter()
função.
Respostas:
Você realmente deve usar
hook_entity_build_defaults_alter()
. Sua documentação afirma explicitamente isso:Provavelmente não funcionou para você, porque você esqueceu de limpar o cache de renderização depois de implementar esse gancho.
Esse gancho é chamado em https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Entity%21EntityViewBuilder.php/class/EntityViewBuilder/8
Consulte também https://www.drupal.org/developing/api/8/cache/contexts para obter uma visão geral dos contextos de cache (o que são, como usá-los e com os quais o núcleo é enviado).
fonte