No he podido agregar un contexto de caché para trabajar para entidades en drupal 8. Específicamente, voy por encabezados: User-Agent. Intenté muchas variaciones de lo siguiente en un 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';
}
}
Estoy tratando de verificar el acceso a los nodos cuando cambia el contexto. También lo he probado en la hook_entity_build_defaults_alter()
función.
Respuestas:
De hecho deberías usar
hook_entity_build_defaults_alter()
. Su documentación incluso declara explícitamente esto:Probablemente no funcionó para usted porque olvidó borrar el caché de renderizado después de implementar ese enlace.
Ese gancho se invoca en https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Entity%21EntityViewBuilder.php/class/EntityViewBuilder/8
Consulte también https://www.drupal.org/developing/api/8/cache/contexts para obtener una descripción general de los contextos de caché (qué son, cómo usarlos, con cuáles se incluye el núcleo).
fuente